diff options
Diffstat (limited to 'media-libs/clutter/files/clutter-9999-perfneu4.patch')
-rw-r--r-- | media-libs/clutter/files/clutter-9999-perfneu4.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/media-libs/clutter/files/clutter-9999-perfneu4.patch b/media-libs/clutter/files/clutter-9999-perfneu4.patch deleted file mode 100644 index fb7b55a..0000000 --- a/media-libs/clutter/files/clutter-9999-perfneu4.patch +++ /dev/null @@ -1,128 +0,0 @@ -From c2a5d27a28e2bbf9f839f06a149253688e83071e Mon Sep 17 00:00:00 2001 -From: Neil Roberts <neil@linux.intel.com> -Date: Wed, 17 Nov 2010 17:57:17 +0000 -Subject: [PATCH] cogl-framebuffer: Try to track format of the framebuffer - -Previously in cogl_read_pixels we assume the format of the framebuffer -is always premultiplied because that is the most likely format with -the default Cogl blend mode. However when the framebuffer is bound to -a texture we should be able to make a better guess at the format -because we know the texture keeps track of the premult status. This -patch adds an internal format member to CoglFramebuffer. For onscreen -framebuffers we still assume it is RGBA_8888_PRE but for offscreen to -textures we copy the texture format. cogl_read_pixels uses this to -determine whether the data returned by glReadPixels will be -premultiplied. - -http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 ---- - clutter/cogl/cogl/cogl-framebuffer-private.h | 3 +++ - clutter/cogl/cogl/cogl-framebuffer.c | 15 +++++++++++++++ - clutter/cogl/cogl/cogl.c | 22 ++++++++++------------ - 3 files changed, 28 insertions(+), 12 deletions(-) - -diff --git a/clutter/cogl/cogl/cogl-framebuffer-private.h b/clutter/cogl/cogl/cogl-framebuffer-private.h -index 803befd..a831ba7 100644 ---- a/clutter/cogl/cogl/cogl-framebuffer-private.h -+++ b/clutter/cogl/cogl/cogl-framebuffer-private.h -@@ -39,6 +39,9 @@ struct _CoglFramebuffer - CoglFramebufferType type; - int width; - int height; -+ /* Format of the pixels in the framebuffer (including the expected -+ premult state) */ -+ CoglPixelFormat format; - - CoglMatrixStack *modelview_stack; - CoglMatrixStack *projection_stack; -diff --git a/clutter/cogl/cogl/cogl-framebuffer.c b/clutter/cogl/cogl/cogl-framebuffer.c -index 5e832b1..ade7344 100644 ---- a/clutter/cogl/cogl/cogl-framebuffer.c -+++ b/clutter/cogl/cogl/cogl-framebuffer.c -@@ -139,12 +139,14 @@ _cogl_is_framebuffer (void *object) - static void - _cogl_framebuffer_init (CoglFramebuffer *framebuffer, - CoglFramebufferType type, -+ CoglPixelFormat format, - int width, - int height) - { - framebuffer->type = type; - framebuffer->width = width; - framebuffer->height = height; -+ framebuffer->format = format; - framebuffer->viewport_x = 0; - framebuffer->viewport_y = 0; - framebuffer->viewport_width = width; -@@ -540,6 +542,7 @@ _cogl_offscreen_new_to_texture_full (CoglHandle texhandle, - { - _cogl_framebuffer_init (COGL_FRAMEBUFFER (offscreen), - COGL_FRAMEBUFFER_TYPE_OFFSCREEN, -+ cogl_texture_get_format (texhandle), - data.level_width, - data.level_height); - -@@ -594,9 +597,21 @@ _cogl_onscreen_new (void) - * implement CoglOnscreen framebuffers, since we can't, e.g. keep track of - * the window size. */ - -+ /* FIXME: We are assuming onscreen buffers will always be -+ premultiplied so we'll set the premult flag on the bitmap -+ format. This will usually be correct because the result of the -+ default blending operations for Cogl ends up with premultiplied -+ data in the framebuffer. However it is possible for the -+ framebuffer to be in whatever format depending on what -+ CoglPipeline is used to render to it. Eventually we may want to -+ add a way for an application to inform Cogl that the framebuffer -+ is not premultiplied in case it is being used for some special -+ purpose. */ -+ - onscreen = g_new0 (CoglOnscreen, 1); - _cogl_framebuffer_init (COGL_FRAMEBUFFER (onscreen), - COGL_FRAMEBUFFER_TYPE_ONSCREEN, -+ COGL_PIXEL_FORMAT_RGBA_8888_PRE, - 0xdeadbeef, /* width */ - 0xdeadbeef); /* height */ - -diff --git a/clutter/cogl/cogl/cogl.c b/clutter/cogl/cogl/cogl.c -index a2a4109..1aeef9e 100644 ---- a/clutter/cogl/cogl/cogl.c -+++ b/clutter/cogl/cogl/cogl.c -@@ -603,17 +603,14 @@ _cogl_read_pixels_full (int x, - - if ((format & COGL_A_BIT)) - { -- /* FIXME: We are assuming glReadPixels will always give us -- premultiplied data so we'll set the premult flag on the -- bitmap format. This will usually be correct because the -- result of the default blending operations for Cogl ends up -- with premultiplied data in the framebuffer. However it is -- possible for the framebuffer to be in whatever format -- depending on what CoglPipeline is used to render to -- it. Eventually we may want to add a way for an application to -- inform Cogl that the framebuffer is not premultiplied in case -- it is being used for some special purpose. */ -- bmp_format |= COGL_PREMULT_BIT; -+ /* We match the premultiplied state of the target buffer to the -+ * premultiplied state of the framebuffer so that it will get -+ * converted to the right format below */ -+ -+ if ((framebuffer->format & COGL_PREMULT_BIT)) -+ bmp_format |= COGL_PREMULT_BIT; -+ else -+ bmp_format &= ~COGL_PREMULT_BIT; - } - - bmp = _cogl_bitmap_new_from_data (pixels, -@@ -640,7 +637,8 @@ _cogl_read_pixels_full (int x, - guint8 *tmp_data = g_malloc (width * height * 4); - - tmp_bmp = _cogl_bitmap_new_from_data (tmp_data, -- COGL_PIXEL_FORMAT_RGBA_8888_PRE, -+ COGL_PIXEL_FORMAT_RGBA_8888 | -+ (bmp_format & COGL_PREMULT_BIT), - width, height, 4 * width, - (CoglBitmapDestroyNotify) g_free, - NULL); --- -1.7.3.16.g9464b
\ No newline at end of file |