summaryrefslogtreecommitdiff
path: root/gdk/gdkrgb.c
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2007-05-16 01:35:51 +0000
committerBrian Cameron <bcameron@src.gnome.org>2007-05-16 01:35:51 +0000
commit94dcec33c18664b4bc6e8e595c94e33a664b2ec2 (patch)
tree74c07b0732174019faefd2c5d377d3f4ced0c5ae /gdk/gdkrgb.c
parent5e9e9fe4e0fe1e75f0da025ada55358cce5d4d9f (diff)
downloadgtk+-94dcec33c18664b4bc6e8e595c94e33a664b2ec2.tar.gz
Add Sun mediaLib support so that hardware acceleration via mediaLib is
2007-05-16 Brian Cameron <brian.cameron@sun.com> * acconfig.h, configure.in, gdk/Makefile.am, gdkprivate.h, gdkrgb.c, gdkdraw.c, gdk-pixbuf/gdk-pixbuf-scale.c, gdk-pixbuf/pixops/Makefile.am, gdk-pixbuf/pixops/pixops.[ch], gdk-pixbuf/pixops/timescale.c: Add Sun mediaLib support so that hardware acceleration via mediaLib is enabled if mediaLib is detected via configure. Enhancement request #344813. I was given permission to commit in the bug report by Matthias Clasen. * gdk/medialib.[ch]: New files added for mediaLib support. * docs/reference/gdk-pixbuf/tmpl/scaling.sgml, docs/reference/gdk/tmpl/rgb.sgml, gdk/gdkdraw.c: Add docs for mediaLib support. svn path=/trunk/; revision=17855
Diffstat (limited to 'gdk/gdkrgb.c')
-rw-r--r--gdk/gdkrgb.c46
1 files changed, 44 insertions, 2 deletions
diff --git a/gdk/gdkrgb.c b/gdk/gdkrgb.c
index 97b2f15c26..6b9b84c761 100644
--- a/gdk/gdkrgb.c
+++ b/gdk/gdkrgb.c
@@ -2158,6 +2158,29 @@ gdk_rgb_convert_0888 (GdkRgbInfo *image_info, GdkImage *image,
}
}
+#ifdef USE_MEDIALIB25
+/* convert 24-bit packed to 32-bit unpacked */
+static void
+gdk_rgb_convert_0888_medialib (GdkRgbInfo *image_info, GdkImage *image,
+ gint x0, gint y0, gint width, gint height,
+ guchar *buf, int rowstride,
+ gint x_align, gint y_align, GdkRgbCmap *cmap)
+{
+ int y, w;
+ guchar *obuf, *p;
+ gint bpl;
+ guchar *bptr, *bp2;
+
+ bptr = buf;
+ bpl = image->bpl;
+ obuf = ((guchar *)image->mem) + y0 * bpl + x0 * 4;
+
+ mlib_VideoColorRGBint_to_BGRAint (obuf, bptr, NULL, 0xff,
+ width, height, bpl,
+ rowstride, 0);
+}
+#endif
+
static void
gdk_rgb_convert_0888_br (GdkRgbInfo *image_info, GdkImage *image,
gint x0, gint y0, gint width, gint height,
@@ -3131,7 +3154,17 @@ gdk_rgb_select_conv (GdkRgbInfo *image_info)
(depth == 24 || depth == 32) &&
vtype == GDK_VISUAL_TRUE_COLOR &&
(mask_rgb && byte_order == GDK_LSB_FIRST))
- conv = gdk_rgb_convert_0888;
+ {
+#ifdef USE_MEDIALIB25
+ if (_gdk_use_medialib ())
+ conv = gdk_rgb_convert_0888_medialib;
+ else
+ conv = gdk_rgb_convert_0888;
+#else
+ conv = gdk_rgb_convert_0888;
+#endif
+ }
+
#if G_BYTE_ORDER == G_BIG_ENDIAN
else if (bpp == 32 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR &&
(mask_bgr && byte_order == GDK_MSB_FIRST))
@@ -3148,7 +3181,16 @@ gdk_rgb_select_conv (GdkRgbInfo *image_info)
conv = gdk_rgb_convert_8880_br;
else if (bpp == 32 && depth == 32 && vtype == GDK_VISUAL_TRUE_COLOR &&
(mask_rgb && byte_order == GDK_LSB_FIRST))
- conv = gdk_rgb_convert_0888;
+ {
+#ifdef USE_MEDIALIB25
+ if (_gdk_use_medialib ())
+ conv = gdk_rgb_convert_0888_medialib;
+ else
+ conv = gdk_rgb_convert_0888;
+#else
+ conv = gdk_rgb_convert_0888;
+#endif
+ }
#endif
else if (vtype == GDK_VISUAL_TRUE_COLOR && byte_order == GDK_LSB_FIRST)
{