From 4dcd5f6134f62bf1d5988cea7479b14c896190fd Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Sat, 9 May 2009 14:39:01 -0400 Subject: [PATCH] Use correct texture format for pixmap textures and FBO's RGBA data in X pixmaps and in FBOs is already premultiplied; use the right format when creating cogl textures. http://bugzilla.openedhand.com/show_bug.cgi?id=1406 Signed-off-by: Robert Bragg --- clutter/clutter-texture.c | 4 ++-- clutter/glx/clutter-glx-texture-pixmap.c | 6 ++++-- clutter/x11/clutter-x11-texture-pixmap.c | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/clutter/clutter-texture.c b/clutter/clutter-texture.c index c619cbabb..5a31cffa4 100644 --- a/clutter/clutter-texture.c +++ b/clutter/clutter-texture.c @@ -296,7 +296,7 @@ clutter_texture_realize (ClutterActor *actor) tex = cogl_texture_new_with_size (priv->width, priv->height, flags, - COGL_PIXEL_FORMAT_RGBA_8888); + COGL_PIXEL_FORMAT_RGBA_8888_PRE); cogl_material_set_layer (priv->material, 0, tex); @@ -2243,7 +2243,7 @@ on_fbo_source_size_change (GObject *object, tex = cogl_texture_new_with_size (MAX (priv->width, 1), MAX (priv->height, 1), flags, - COGL_PIXEL_FORMAT_RGBA_8888); + COGL_PIXEL_FORMAT_RGBA_8888_PRE); cogl_material_set_layer (priv->material, 0, tex); diff --git a/clutter/glx/clutter-glx-texture-pixmap.c b/clutter/glx/clutter-glx-texture-pixmap.c index fb174fd6b..aab75f658 100644 --- a/clutter/glx/clutter-glx-texture-pixmap.c +++ b/clutter/glx/clutter-glx-texture-pixmap.c @@ -359,14 +359,16 @@ create_cogl_texture (ClutterTexture *texture, handle = cogl_texture_new_from_foreign (tex, CGL_TEXTURE_RECTANGLE_ARB, width, height, 0, 0, - cogl_format | COGL_BGR_BIT); + cogl_format | COGL_BGR_BIT | + COGL_PREMULT_BIT); } else { handle = cogl_texture_new_with_size (width, height, COGL_TEXTURE_NO_SLICING, - cogl_format | COGL_BGR_BIT); + cogl_format | COGL_BGR_BIT | + COGL_PREMULT_BIT); using_rectangle = FALSE; } diff --git a/clutter/x11/clutter-x11-texture-pixmap.c b/clutter/x11/clutter-x11-texture-pixmap.c index cb0c38529..a09ab1f9d 100644 --- a/clutter/x11/clutter-x11-texture-pixmap.c +++ b/clutter/x11/clutter-x11-texture-pixmap.c @@ -871,7 +871,8 @@ clutter_x11_texture_pixmap_update_area_real (ClutterX11TexturePixmap *texture, width, height, bytes_per_line, 4, - CLUTTER_TEXTURE_RGB_FLAG_BGR, + CLUTTER_TEXTURE_RGB_FLAG_BGR | + CLUTTER_TEXTURE_RGB_FLAG_PREMULT, &error); else clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (texture), @@ -880,7 +881,8 @@ clutter_x11_texture_pixmap_update_area_real (ClutterX11TexturePixmap *texture, width, height, bytes_per_line, 4, - CLUTTER_TEXTURE_RGB_FLAG_BGR, + CLUTTER_TEXTURE_RGB_FLAG_BGR | + CLUTTER_TEXTURE_RGB_FLAG_PREMULT, &error);