From: raster Date: Wed, 28 Jul 2010 00:16:06 +0000 (+0000) Subject: From: Alexander Kerner X-Git-Tag: submit/trunk/20120815.174732~2640 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6785acf1a065d64b33a25bd00aedbb2460178dcc;p=profile%2Fivi%2Fevas.git From: Alexander Kerner Subject: [E-devel] 8bpp xcb evas engine Hi all, I've implemented the 8bpp grayscale evas engine. It is based on the 16bpp engine. It would be nice if someone could review the code and maybe commit into svn. The patches against evas and ecore are attached. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@50560 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/Makefile.am b/Makefile.am index 1e000f4..1114352 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,6 +30,7 @@ evas-software-buffer.pc \ evas-software-qtopia.pc \ evas-software-x11.pc \ evas-software-16-x11.pc \ +evas-software-8-x11.pc \ evas-xrender-x11.pc \ evas-xrender-xcb.pc \ evas-software-gdi.pc \ @@ -69,6 +70,7 @@ evas-software-buffer.pc.in \ evas-software-qtopia.pc.in \ evas-software-x11.pc.in \ evas-software-16-x11.pc.in \ +evas-software-8-x11.pc.in \ evas-xrender-x11.pc.in \ evas-xrender-xcb.pc.in \ evas-software-gdi.pc.in \ @@ -90,6 +92,10 @@ if BUILD_ENGINE_SOFTWARE_16_X11 pkgconfig_DATA += evas-software-16-x11.pc endif +if BUILD_ENGINE_SOFTWARE_8_X11 +pkgconfig_DATA += evas-software-8-x11.pc +endif + if BUILD_ENGINE_DIRECTFB pkgconfig_DATA += evas-directfb.pc endif diff --git a/configure.ac b/configure.ac index f76c784..ce24f37 100644 --- a/configure.ac +++ b/configure.ac @@ -106,6 +106,7 @@ want_evas_engine_software_sdl="no" want_evas_engine_fb="no" want_evas_engine_directfb="no" want_evas_engine_software_qtopia="no" +want_evas_engine_software_8_x11="no" want_evas_engine_software_16_x11="no" want_evas_engine_software_16_ddraw="no" want_evas_engine_software_16_wince="no" @@ -148,6 +149,7 @@ case "$host_os" in *) want_evas_engine_software_xlib="auto" want_evas_engine_xrender_x11="auto" + want_evas_engine_software_8_x11="auto" want_evas_engine_software_16_x11="auto" ;; esac @@ -521,6 +523,8 @@ EVAS_CHECK_ENGINE([directfb], [${want_evas_engine_directfb}], [no], [DirectFB]) # disable cairo engine for the release #EVAS_CHECK_ENGINE([software-qtopia], [${want_evas_engine_software_qtopia}], [no], [Qtopia]) +EVAS_CHECK_ENGINE([software-8-x11], [${want_evas_engine_software_8_x11}], [yes], [Software X11 8 bits grayscale]) + EVAS_CHECK_ENGINE([software-16-x11], [${want_evas_engine_software_16_x11}], [yes], [Software X11 16 bits]) EVAS_CHECK_ENGINE([software-16-ddraw], [${want_evas_engine_software_16_ddraw}], [no], [Software DirectDraw 16 bits]) @@ -659,6 +663,28 @@ if test "x${have_static_software_16}" = "xyes"; then AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_16, [1], [Build software 16 engine as part of libevas]) fi +# if software 8 x11 is enabled - build software_8 (the generic 8bit +# engine). +have_evas_engine_software_8="no" +if test "x$have_evas_engine_software_8_x11" = "xyes" -o "x$have_evas_engine_software_8_x11" = "xstatic"; then + have_evas_engine_software_8="yes" +fi +AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_8, test "x$have_evas_engine_software_8" = "xyes") + +# if software 8 need to be build as part of libevas.so +have_static_software_8="no" +AC_ARG_ENABLE([static-software-8], + [AC_HELP_STRING([--enable-static-software-8], [Build software 8 engine as part of libevas])], + [have_static_software_8=${enableval}] +) +AC_MSG_CHECKING([Whether to build software 8 engine as part of libevas]) +AC_MSG_RESULT([${have_static_software_8}]) + +AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_8, test "x${have_static_software_8}" = "xyes") +if test "x${have_static_software_8}" = "xyes"; then + AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_8, [1], [Build software 8 engine as part of libevas]) +fi + ##################################################################### ## Image loaders @@ -1409,6 +1435,7 @@ evas-opengl-sdl.pc evas-quartz.pc evas-software-buffer.pc evas-software-x11.pc +evas-software-8-x11.pc evas-software-16-x11.pc evas-xrender-x11.pc evas-xrender-xcb.pc @@ -1437,6 +1464,7 @@ src/lib/engines/common/evas_op_copy/Makefile src/lib/engines/common/evas_op_mask/Makefile src/lib/engines/common/evas_op_mul/Makefile src/lib/engines/common/evas_op_sub/Makefile +src/lib/engines/common_8/Makefile src/lib/engines/common_16/Makefile src/modules/Makefile src/modules/engines/Makefile @@ -1456,6 +1484,8 @@ src/modules/engines/gl_sdl/Makefile src/modules/engines/quartz/Makefile src/modules/engines/xrender_x11/Makefile src/modules/engines/software_sdl/Makefile +src/modules/engines/software_8/Makefile +src/modules/engines/software_8_x11/Makefile src/modules/engines/software_16/Makefile src/modules/engines/software_16_x11/Makefile src/modules/engines/software_16_ddraw/Makefile @@ -1530,6 +1560,7 @@ fi echo " Software Framebuffer.......: $have_evas_engine_fb" echo " DirectFB...................: $have_evas_engine_directfb" #echo " Software Qtopia............: $have_evas_engine_software_qtopia" +echo " Software 8bit grayscale....: $have_evas_engine_software_8" echo " Software 16bit ............: $have_evas_engine_software_16" echo " Software 16bit X11.........: $have_evas_engine_software_16_x11" echo " Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw" diff --git a/m4/evas_check_engine.m4 b/m4/evas_check_engine.m4 index 0454951..54ce5d2 100644 --- a/m4/evas_check_engine.m4 +++ b/m4/evas_check_engine.m4 @@ -248,6 +248,8 @@ PKG_CHECK_MODULES([XCB], requirement="xcb xcb-shm xcb-image pixman-1" evas_engine_[]$1[]_cflags="${XCB_CFLAGS}" evas_engine_[]$1[]_libs="${XCB_LIBS}" + ],[ + have_dep="no" ] ) @@ -283,6 +285,8 @@ PKG_CHECK_MODULES([XCBRENDER], requirement="xcb xcb-shm xcb-render xcb-image pixman-1" evas_engine_[]$1[]_cflags="${XCBRENDER_CFLAGS}" evas_engine_[]$1[]_libs="${XCBRENDER_LIBS}" + ],[ + have_dep="no" ] ) @@ -655,6 +659,42 @@ fi ]) +dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_8_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) + +AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_8_X11], +[ + +have_dep="no" +evas_engine_[]$1[]_cflags="" +evas_engine_[]$1[]_libs="" + +PKG_CHECK_MODULES([XCB], + [xcb xcb-shm xcb-image >= 0.2.1 pixman-1], + [ + have_dep="yes" + requirement="xcb xcb-shm xcb-image pixman-1" + evas_engine_[]$1[]_cflags="${XCB_CFLAGS}" + evas_engine_[]$1[]_libs="${XCB_LIBS}" + ],[ + have_dep="no" + ] +) + +AC_SUBST([evas_engine_$1_cflags]) +AC_SUBST([evas_engine_$1_libs]) + +if test "x$3" = "xstatic" ; then + requirement_evas="${requirement} ${requirement_evas}" +fi + +if test "x${have_dep}" = "xyes" ; then + m4_default([$4], [:]) +else + m4_default([$5], [:]) +fi + +]) + dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11], [ diff --git a/src/lib/Evas.h b/src/lib/Evas.h index 06e78b3..7a56156 100644 --- a/src/lib/Evas.h +++ b/src/lib/Evas.h @@ -151,7 +151,8 @@ typedef enum _Evas_Colorspace /* these are not currently supported - but planned for the future */ EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */ EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */ - EVAS_COLORSPACE_RGB565_A5P /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */ + EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */ + EVAS_COLORSPACE_GRY8 /**< 8bit grayscale */ } Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */ /** diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index d80c8b8..94b0812 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -67,6 +67,15 @@ SUBDIRS += ../modules/engines/software_16_x11/ EVAS_STATIC_MODULE += ../modules/engines/software_16_x11/libevas_engine_software_16_x11.la EVAS_STATIC_LIBADD += @evas_engine_software_16_x11_libs@ endif +if EVAS_STATIC_BUILD_SOFTWARE_8 +SUBDIRS += ../modules/engines/software_8/ +EVAS_STATIC_MODULE += ../modules/engines/software_8/libevas_engine_software_8.la +endif +if EVAS_STATIC_BUILD_SOFTWARE_8_X11 +SUBDIRS += ../modules/engines/software_8_x11/ +EVAS_STATIC_MODULE += ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la +EVAS_STATIC_LIBADD += @evas_engine_software_8_x11_libs@ +endif if EVAS_STATIC_BUILD_SOFTWARE_SDL SUBDIRS += \ ../modules/engines/software_16_sdl/ \ @@ -220,6 +229,13 @@ libevas_la_DEPENDENCIES += engines/common_16/libevas_engine_common_16.la endif +if BUILD_ENGINE_SOFTWARE_8 + +libevas_la_LIBADD += engines/common_8/libevas_engine_common_8.la +libevas_la_DEPENDENCIES += engines/common_8/libevas_engine_common_8.la + +endif + libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ DIST_SUBDIRS = canvas cache cserve file engines imaging include diff --git a/src/lib/engines/Makefile.am b/src/lib/engines/Makefile.am index 9d68875..0e7706c 100644 --- a/src/lib/engines/Makefile.am +++ b/src/lib/engines/Makefile.am @@ -8,3 +8,9 @@ if BUILD_ENGINE_SOFTWARE_16 SUBDIRS += common_16 endif + +if BUILD_ENGINE_SOFTWARE_8 + +SUBDIRS += common_8 + +endif diff --git a/src/lib/file/evas_module.c b/src/lib/file/evas_module.c index 9d8cfbc..957767a 100644 --- a/src/lib/file/evas_module.c +++ b/src/lib/file/evas_module.c @@ -105,6 +105,8 @@ EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_ddraw); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_sdl); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_wince); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_x11); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8_x11); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_ddraw); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_gdi); EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_generic); @@ -176,6 +178,12 @@ static const struct { #ifdef EVAS_STATIC_BUILD_SOFTWARE_16_GDI EVAS_EINA_STATIC_MODULE_USE(engine, software_gdi), #endif +#ifdef EVAS_STATIC_BUILD_SOFTWARE_8 + EVAS_EINA_STATIC_MODULE_USE(engine, software_8), +#endif +#ifdef EVAS_STATIC_BUILD_SOFTWARE_8_X11 + EVAS_EINA_STATIC_MODULE_USE(engine, software_8_x11), +#endif #ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC EVAS_EINA_STATIC_MODULE_USE(engine, software_generic), #endif diff --git a/src/lib/include/Makefile.am b/src/lib/include/Makefile.am index 1570bf4..5c986c2 100644 --- a/src/lib/include/Makefile.am +++ b/src/lib/include/Makefile.am @@ -8,5 +8,6 @@ evas_options.h \ evas_macros.h \ evas_mmx.h \ evas_common.h \ +evas_common_soft8.h \ evas_common_soft16.h \ evas_blend_ops.h diff --git a/src/modules/engines/Makefile.am b/src/modules/engines/Makefile.am index 1db0e21..bdc9ba1 100644 --- a/src/modules/engines/Makefile.am +++ b/src/modules/engines/Makefile.am @@ -29,6 +29,12 @@ endif if !EVAS_STATIC_BUILD_QUARTZ SUBDIRS += quartz endif +if !EVAS_STATIC_BUILD_SOFTWARE_8 +SUBDIRS += software_8 +endif +if !EVAS_STATIC_BUILD_SOFTWARE_8_X11 +SUBDIRS += software_8_x11 +endif if !EVAS_STATIC_BUILD_SOFTWARE_16 SUBDIRS += software_16 endif