From 2a17854bbfe5c83a48cdc59481d4a631d08fec22 Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Wed, 18 May 2022 14:29:53 +0200 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- ...GetPlatformDisplay-not-eglGetDisplay.patch | 117 +++++ ...dd-GL_ARB_shader_texture_lod-support.patch | 96 ++++ .../0003-texture-support-copy_sub_image.patch | 373 +++++++++++++++ SPECS/cogl.spec | 452 ++++++++++++++++++ 4 files changed, 1038 insertions(+) create mode 100644 SOURCES/0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch create mode 100644 SOURCES/0002-add-GL_ARB_shader_texture_lod-support.patch create mode 100644 SOURCES/0003-texture-support-copy_sub_image.patch create mode 100644 SPECS/cogl.spec diff --git a/SOURCES/0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch b/SOURCES/0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch new file mode 100644 index 0000000..a507b2a --- /dev/null +++ b/SOURCES/0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch @@ -0,0 +1,117 @@ +From 988e021960eb372be50038fdf0b2874f063c02b6 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +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 +--- + 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 + diff --git a/SOURCES/0002-add-GL_ARB_shader_texture_lod-support.patch b/SOURCES/0002-add-GL_ARB_shader_texture_lod-support.patch new file mode 100644 index 0000000..7a39df3 --- /dev/null +++ b/SOURCES/0002-add-GL_ARB_shader_texture_lod-support.patch @@ -0,0 +1,96 @@ +From 78636289b073d67209a20145ef0dc003f2d77db6 Mon Sep 17 00:00:00 2001 +From: Sian Cao +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 : 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 + diff --git a/SOURCES/0003-texture-support-copy_sub_image.patch b/SOURCES/0003-texture-support-copy_sub_image.patch new file mode 100644 index 0000000..33f7dcb --- /dev/null +++ b/SOURCES/0003-texture-support-copy_sub_image.patch @@ -0,0 +1,373 @@ +From d8b34ab0604d80d0be22b8b78e9aa6bf4fac7db0 Mon Sep 17 00:00:00 2001 +From: Sian Cao +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 : initial + Bowen Li : 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 + + #include ++#include + + #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 + diff --git a/SPECS/cogl.spec b/SPECS/cogl.spec new file mode 100644 index 0000000..e570d5e --- /dev/null +++ b/SPECS/cogl.spec @@ -0,0 +1,452 @@ +%global with_tests 1 + +Name: cogl +Version: 1.22.8 +Release: 5%{?dist} +Summary: A library for using 3D graphics hardware to draw pretty pictures + +License: LGPLv2+ +URL: http://www.clutter-project.org/ +Source0: http://download.gnome.org/sources/cogl/1.22/cogl-%{version}.tar.xz + +# Vaguely related to https://bugzilla.gnome.org/show_bug.cgi?id=772419 +# but on the 1.22 branch, and the static inline in the header is gross +# ajax promises he'll clean this up. +Patch0: 0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch + +# "GL_ARB_shader_texture_lod" is used to do lod biased texturing. It +# make achieve faster blurring of images instead of using large blur radius. +Patch1: 0002-add-GL_ARB_shader_texture_lod-support.patch + +# "copy_sub_image" 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. +Patch2: 0003-texture-support-copy_sub_image.patch + +BuildRequires: chrpath +BuildRequires: pkgconfig(cairo) +BuildRequires: mesa-libEGL-devel +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(gdk-pixbuf-2.0) +BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(gtk-doc) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(xcomposite) +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xrandr) + +BuildRequires: pkgconfig(wayland-server) +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(wayland-cursor) +BuildRequires: pkgconfig(wayland-egl) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: make + +%description +Cogl is a small open source library for using 3D graphics hardware to draw +pretty pictures. The API departs from the flat state machine style of +OpenGL and is designed to make it easy to write orthogonal components that +can render without stepping on each others toes. + +As well aiming for a nice API, we think having a single library as opposed +to an API specification like OpenGL has a few advantages too; like being +able to paper over the inconsistencies/bugs of different OpenGL +implementations in a centralized place, not to mention the myriad of OpenGL +extensions. It also means we are in a better position to provide utility +APIs that help software developers since they only need to be implemented +once and there is no risk of inconsistency between implementations. + +Having other backends, besides OpenGL, such as drm, Gallium or D3D are +options we are interested in for the future. + +%package devel +Summary: %{name} development environment +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Header files and libraries for building and developing apps with %{name}. + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description doc +This package contains documentation for %{name}. + +%if 0%{?with_tests} +%package tests +Requires: %{name} = %{version}-%{release} +Summary: Tests for %{name} + +%description tests +This package contains the installable tests for %{cogl}. +%endif + +%prep +%autosetup -p1 + +%build +CFLAGS="$RPM_OPT_FLAGS -fPIC" +%configure \ + --enable-cairo=yes \ + --enable-cogl-pango=yes \ + --enable-gdk-pixbuf=yes \ + --enable-glx=yes \ + --enable-gtk-doc \ + --enable-introspection=yes \ + --enable-kms-egl-platform \ + --enable-wayland-egl-platform \ + --enable-wayland-egl-server \ + --enable-xlib-egl-platform \ + %{?with_tests:--enable-installed-tests} + +make %{?_smp_mflags} V=1 + +%install +%make_install + +#Remove libtool archives. +find %{buildroot} -name '*.la' -delete + +# This gets installed by mistake +rm %{buildroot}%{_datadir}/cogl/examples-data/crate.jpg + +# Remove lib64 rpaths +chrpath --delete $RPM_BUILD_ROOT%{_libdir}/libcogl-path.so +chrpath --delete $RPM_BUILD_ROOT%{_libdir}/libcogl-pango.so + +%find_lang %{name} + +%check +# make check + +%ldconfig_scriptlets + +%files -f %{name}.lang +%license COPYING +%doc NEWS README +%{_libdir}/libcogl*.so.20* +%{_libdir}/girepository-1.0/Cogl*.typelib + +%files devel +%{_includedir}/cogl +%{_libdir}/libcogl*.so +%{_libdir}/pkgconfig/*.pc +%{_datadir}/gir-1.0/Cogl*.gir + +%files doc +%{_datadir}/gtk-doc/html/cogl +%{_datadir}/gtk-doc/html/cogl-2.0-experimental + +%if 0%{?with_tests} +%files tests +%{_datadir}/installed-tests/%{name} +%{_libexecdir}/installed-tests/%{name} +%endif + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 1.22.8-5 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Apr 15 2021 Mohan Boddu - 1.22.8-4 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 1.22.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 1.22.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jun 04 2020 Kalev Lember - 1.22.8-1 +- Update to 1.22.8 + +* Mon Mar 09 2020 Kalev Lember - 1.22.6-1 +- Update to 1.22.6 + +* Sat Mar 07 2020 Leigh Scott - 1.22.4-4 +- Fix building against libglvnd-provided EGL headers + +* Tue Jan 28 2020 Fedora Release Engineering - 1.22.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 1.22.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Apr 24 2019 Peter Robinson 1.22.4-1 +- Update to 1.22.4 + +* Tue Apr 16 2019 Adam Williamson - 1.22.2-13 +- Backport MR#8 to fix builds of cogl-using packages in F31+ + +* Thu Jan 31 2019 Fedora Release Engineering - 1.22.2-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jul 12 2018 Fedora Release Engineering - 1.22.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.22.2-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 1.22.2-9 +- Switch to %%ldconfig_scriptlets + +* Wed Nov 22 2017 Troy Dawson - 1.22.2-8 +- Fix spec file conditionals + +* Thu Sep 28 2017 mosquito - 1.22.2-7 +- Add GL_ARB_shader_texture_lod and copy_sub_image support (#1421055) +- Add pkgconfig(egl) BReq for rawhide +- Move BReqs to pkgconfig + +* Wed Aug 02 2017 Fedora Release Engineering - 1.22.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.22.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed May 17 2017 Owen Taylor - 1.22.2-4 +- Add Requires: %%{name} = %%{version}-%%{release} to the tests subpackage + +* Fri Feb 10 2017 Fedora Release Engineering - 1.22.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Oct 11 2016 Adam Jackson - 1.22.2-2 +- Prefer eglGetPlatformDisplay to eglGetDisplay + +* Fri Aug 26 2016 Kalev Lember - 1.22.2-1 +- Update to 1.22.2 +- Don't set group tags + +* Wed Feb 03 2016 Fedora Release Engineering - 1.22.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Oct 21 2015 Ray Strode 1.22.0-2 +- Fix black login screen + Resolves: #1272737 + +* Wed Sep 16 2015 Kalev Lember - 1.22.0-1 +- Update to 1.22.0 + +* Fri Aug 21 2015 Kalev Lember - 1.21.2-2 +- Re-enable parallel make + +* Fri Aug 21 2015 Kalev Lember - 1.21.2-1 +- Update to 1.21.2 +- Use make_install macro +- Mark COPYING as %%license +- Drop large ChangeLog file + +* Wed Jun 17 2015 Fedora Release Engineering - 1.20.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Mar 23 2015 Ray Strode 1.20.0-3 +- Update to upstreamed version of mgag200 fix + +* Wed Mar 11 2015 Ray Strode 1.20.0-2 +- Try to fix wayland on mgag200 + +* Mon Feb 23 2015 Kalev Lember - 1.20.0-1 +- Update to 1.20.0 + +* Tue Jan 20 2015 Peter Robinson 1.18.2-10 +- Enable tests subpackage (rhbz 1163429) + +* Sun Nov 16 2014 Kalev Lember - 1.18.2-9 +- Obsolete compat-cogl116 from rhughes-f20-gnome-3-12 copr + +* Thu Nov 13 2014 Kalev Lember - 1.18.2-8 +- Disable cogl-gst as long as we don't have clutter-gst3 (#1158676) + +* Sat Nov 01 2014 Richard Hughes - 1.18.2-7 +- Fix compile on RHEL, harder + +* Mon Oct 27 2014 Richard Hughes - 1.18.2-6 +- Fix compile on RHEL + +* Fri Aug 22 2014 Kalev Lember - 1.18.2-5 +- Remove lib64 rpaths (#1132876) + +* Sat Aug 16 2014 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jul 22 2014 Kalev Lember - 1.18.2-3 +- Rebuilt for gobject-introspection 1.41.4 + +* Fri Jul 11 2014 Peter Robinson 1.18.2-2 +- Run make check but don't fail build on it + +* Fri Jul 04 2014 Kalev Lember - 1.18.2-1 +- Update to 1.18.2 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.18.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Kalev Lember - 1.18.0-3 +- Backport an upstream fix for a totem crash + +* Thu May 08 2014 Adam Jackson +- Add optional installed-tests subpackage + +* Mon Apr 28 2014 Richard Hughes - 1.18.0-2 +- Build with --enable-cogl-gst + +* Fri Mar 21 2014 Kalev Lember - 1.18.0-1 +- Update to 1.18.0 + +* Fri Mar 21 2014 Kalev Lember - 1.17.5-1.gitbb10532 +- Update to 1.17.5 git snapshot + +* Fri Feb 21 2014 Kalev Lember - 1.17.4-2 +- Drop compat-libcogl19 + +* Thu Feb 20 2014 Kalev Lember - 1.17.4-1 +- Update to 1.17.4, which includes soname bump +- Build a temporary compat-libcogl19 subpackage to ease the rebuilds + +* Wed Feb 05 2014 Richard Hughes - 1.17.2-1 +- Update to 1.17.2 + +* Tue Jan 21 2014 Richard Hughes - 1.16.2-1 +- Update to 1.16.2 + +* Wed Sep 25 2013 Dan HorĂ¡k - 1.16.0-2 +- fix build on big endians (#1011893) + +* Tue Sep 24 2013 Kalev Lember - 1.16.0-1 +- Update to 1.16.0 + +* Thu Sep 12 2013 Kalev Lember - 1.15.10-3 +- More configure options for enabling the gnome-shell Wayland compositor +- Enable parallel build + +* Tue Sep 10 2013 Matthias Clasen - 1.15.10-2 +- Add configure options that are needed to enable the gnome-shell + Wayland compositor + +* Mon Sep 02 2013 Kalev Lember - 1.15.10-1 +- Update to 1.15.10 + +* Thu Aug 22 2013 Kalev Lember - 1.15.8-1 +- Update to 1.15.8 + +* Fri Aug 09 2013 Kalev Lember - 1.15.4-1 +- Update to 1.15.4 + +* Sat Aug 03 2013 Fedora Release Engineering - 1.14.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jun 12 2013 Kalev Lember 1.14.0-3 +- Rebuilt + +* Wed May 22 2013 Adam Jackson 1.14.0-2 +- cogl-1.14.0-21-ge26464f.patch: Sync with 1.14 branch for a crash fix. + +* Mon Mar 25 2013 Kalev Lember 1.14.0-1 +- Update to 1.14.0 + +* Wed Mar 13 2013 Matthias Clasen 1.13.4-2 +- Enable wayland backend + +* Thu Feb 21 2013 Bastien Nocera 1.13.4-1 +- Update to 1.13.4 + +* Wed Feb 13 2013 Fedora Release Engineering - 1.13.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jan 24 2013 Peter Robinson 1.13.2-1 +- Update to 1.13.2 + +* Mon Jan 7 2013 Peter Robinson 1.12.2-1 +- Update to 1.12.2 + +* Tue Sep 25 2012 Kalev Lember - 1.12.0-1 +- Update to 1.12.0 + +* Tue Sep 18 2012 Kalev Lember - 1.11.6-1 +- Update to 1.11.6 +- Drop upstreamed cogl-1.11.4-mesa-strings.patch + +* Mon Sep 17 2012 Adam Jackson 1.11.4-2 +- cogl-1.11.4-mesa-strings.patch: Update match strings for Mesa. + +* Mon Sep 3 2012 Peter Robinson - 1.11.4-1 +- Update to 1.11.4 + +* Tue Aug 21 2012 Richard Hughes - 1.11.2-1 +- Update to 1.11.2 + +* Fri Jul 27 2012 Fedora Release Engineering - 1.10.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jul 18 2012 Kalev Lember - 1.10.4-1 +- Update to 1.10.4 +- Dropped no-framebuffer-blit patch which is included in the release + +* Thu Apr 19 2012 Adel Gadllah - 1.10.2-1 +- Update to 1.10.2 + +* Tue Mar 20 2012 Kalev Lember - 1.10.0-1 +- Update to 1.10.0 + +* Sat Mar 10 2012 Matthias Clasen - 1.9.8-1 +- Update to 1.9.8 + +* Sat Feb 25 2012 Matthias Clasen - 1.9.6-1 +- Update to 1.9.6 + +* Tue Jan 17 2012 Peter Robinson - 1.9.4-1 +- Update to 1.9.4 +- http://ftp.gnome.org/pub/GNOME/sources/cogl/1.9/cogl-1.9.4.news + +* Thu Jan 12 2012 Fedora Release Engineering - 1.9.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Nov 23 2011 Matthias Clasen 1.9.2-1 +- Update to 1.9.2 + +* Thu Nov 03 2011 Adam Jackson 1.8.2-4 +- cogl-1.8.2-lp-no-framebuffer-blit.patch: Disable the subbuffer blit code + when running on llvmpipe until it's unbroken. + +* Tue Nov 01 2011 Adam Jackson 1.8.2-3 +- cogl-1.8.2-no-drm-hax.patch: Don't try insane direct DRM vblank wait. + +* Wed Oct 26 2011 Fedora Release Engineering - 1.8.2-2 +- Rebuilt for glibc bug#747377 + +* Mon Oct 17 2011 Peter Robinson - 1.8.2-1 +- 1.8.2 stable release +- http://ftp.gnome.org/pub/GNOME/sources/cogl/1.8/cogl-1.8.2.news +- Enable gdk-pixbuf2 support - Fixes RHBZ # 738092 + +* Mon Sep 19 2011 Peter Robinson - 1.8.0-1 +- 1.8.0 stable release +- http://ftp.gnome.org/pub/GNOME/sources/cogl/1.8/cogl-1.8.0.news + +* Mon Sep 5 2011 Peter Robinson - 1.7.8-1 +- Update to 1.7.8 + +* Thu Aug 18 2011 Matthias Clasen - 1.7.6-1 +- Update to 1.7.6 + +* Tue Jul 26 2011 Matthias Clasen - 1.7.4-1 +- Update to 1.7.4 + +* Mon Jul 4 2011 Peter Robinson - 1.7.2-1 +- Update to 1.7.2 + +* Thu Jun 16 2011 Peter Robinson - 1.7.0-3 +- Update spec for review feedback + +* Thu Jun 16 2011 Peter Robinson - 1.7.0-2 +- Update spec for review feedback + +* Wed Jun 15 2011 Peter Robinson - 1.7.0-1 +- Initial Package