You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
813 lines
29 KiB
813 lines
29 KiB
11 years ago
|
Evas 1.7.99
|
||
19 years ago
|
|
||
13 years ago
|
******************************************************************************
|
||
19 years ago
|
|
||
13 years ago
|
FOR ANY ISSUES PLEASE EMAIL:
|
||
|
enlightenment-devel@lists.sourceforge.net
|
||
13 years ago
|
|
||
13 years ago
|
******************************************************************************
|
||
13 years ago
|
|
||
16 years ago
|
Requirements:
|
||
|
-------------
|
||
19 years ago
|
|
||
16 years ago
|
Must:
|
||
13 years ago
|
libc
|
||
11 years ago
|
eina (1.6.0 or better)
|
||
|
eobj
|
||
13 years ago
|
freetype (2.1.9 or better)
|
||
19 years ago
|
|
||
16 years ago
|
Recommended:
|
||
12 years ago
|
libX11 + libXext + libXrender
|
||
|
OpenGL2.0 or OpenGL-ES 2.0
|
||
13 years ago
|
fontconfig
|
||
|
libpng
|
||
12 years ago
|
libjpeg (6.0 or better)
|
||
|
eet (1.5.0 or better)
|
||
12 years ago
|
fribidi
|
||
12 years ago
|
harfbuzz
|
||
|
liblinebreak
|
||
19 years ago
|
|
||
16 years ago
|
Optional:
|
||
11 years ago
|
XCB SDL esvg libtiff libwebp libgif edb DirectFB evas_generic_loaders
|
||
19 years ago
|
|
||
13 years ago
|
Evas is a clean display canvas API for several target display systems
|
||
|
that can draw anti-aliased text, smooth super and sub-sampled scaled
|
||
|
images, alpha-blend objects much and more.
|
||
|
|
||
|
Evas is designed to be portable to different display systems. Evas uses very
|
||
13 years ago
|
little RAM too (try profiling it in memprof if you want to
|
||
19 years ago
|
know) most of the ram allocated, if you look, is for freetype itself,
|
||
|
image pixel data, and font glyph data. You can't really avoid this, though
|
||
|
evas tries to share this data as much as possible and not duplicate where it
|
||
13 years ago
|
can. Feel free to point me at sensible memory optimizations etc. though :) I
|
||
|
want this baby to be lean, mean tiny, fast and do everything from your
|
||
19 years ago
|
massive multi-cpu desktop with gobs of ram and disk to a tiny watch.
|
||
|
|
||
|
Evas also supports full UTF-8 for text object strings, thus allowing for
|
||
13 years ago
|
full internationalized text strings (if your font gives you all the
|
||
19 years ago
|
characters). I've tested with quite a few fonts and it works quite well.
|
||
|
Though this requires a unicode compatible font with unicode charmap support
|
||
|
(cyberbit is quite good actually as a font). For now Evas draws the fonts
|
||
|
only from left to right, so arabic, hebrew etc. won't display quite right,
|
||
16 years ago
|
direction-wise, but the characters do.
|
||
19 years ago
|
|
||
13 years ago
|
------------------------------------------------------------------------------
|
||
|
COMPILING AND INSTALLING:
|
||
|
|
||
|
./configure
|
||
|
make
|
||
13 years ago
|
(as root unless you are installing in your users directories):
|
||
13 years ago
|
make install
|
||
|
|
||
19 years ago
|
if you want to know what options to enable
|
||
16 years ago
|
./configure --help
|
||
19 years ago
|
|
||
13 years ago
|
Evas's rendering code assumes a decently optimizing compiler. For
|
||
|
example gcc with -O2 -march=nocona for example (compile for core2 duo
|
||
13 years ago
|
x86 or better). You may choose not to compile for a very modern
|
||
13 years ago
|
architecture, and Evas still has MMX/SSE, NEON and other hand-crafted
|
||
|
assembly, but not for everything, so make use of your compiler
|
||
|
optimizing as much as possible. At least use -O2 or equivalents.
|
||
|
|
||
19 years ago
|
Notes:
|
||
|
the small dither mask is faster on the ipaq, but is not as good looking. on
|
||
13 years ago
|
desktop machines it makes no speed difference so only use
|
||
12 years ago
|
--enable-small-dither-mask if you really need the speed for low depth
|
||
19 years ago
|
you need at least 1 image loader if you want to load images.
|
||
|
gcc 3.0.x on solaris screws up the jpeg code so erroring out doesn't work.
|
||
12 years ago
|
use gcc 3.2 on solaris.
|
||
19 years ago
|
|
||
13 years ago
|
notes on features (--enable-FEATURE enables it and --disable-FEATURE
|
||
|
disables it, some being enabled or disabled by default or if
|
||
|
dependencies are found):
|
||
19 years ago
|
|
||
12 years ago
|
Also the wayland support (EGL and SHM engines) is considered experimental as
|
||
12 years ago
|
wayland itself is still unstable and liable to change core protocol.
|
||
|
If you use this api, it is possible it will break in future, until this
|
||
|
notice is removed.
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
19 years ago
|
SCALING:
|
||
|
--enable-scale-sample
|
||
|
|
||
|
this enables the sampling scaler code. this is the fastest image scaling
|
||
|
code, but also the lowest quality. when scaling up pixels will become blocky
|
||
|
and when scaling down you will see shimmering/aliasing artifacts. this is a
|
||
|
speed vs. quality tradeoff
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-scale-smooth
|
||
|
|
||
|
this is the nicest looking scaler that is not that much slower than
|
||
13 years ago
|
tri-linear, but it looks really good.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
19 years ago
|
DITHERING:
|
||
|
--enable-small-dither-mask
|
||
|
|
||
|
this uses a 4x4 dither mask instead of 128x128. on desktop boxes these days
|
||
|
(pentium, pentium2, amd etc.) the speed difference is not really measurable,
|
||
|
but the quality of the 128x128 dither mask is quite a lot better. patterns
|
||
13 years ago
|
of dithering are much less noticeable, so it is recommended to not enable
|
||
19 years ago
|
this unless you are struggling for speed. the compaq ipaq for example shows
|
||
|
a slowdown with this large a dither mask so enabling a small dither mask is
|
||
13 years ago
|
recommended unless you really want to forgo the speed.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-line-dither-mask
|
||
|
|
||
|
this is a faster alternative to the small or large dither masks above.
|
||
|
this dithers only on an alternating-line basis. this only provides 1
|
||
|
intermediate "dither" level whose odd and even pixels alternate
|
||
|
between the 2 closest colors available, but it is very fast. almost as
|
||
|
fast as no dithering. quality though will not be as good as small or
|
||
|
default "large" dither masks.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-no-dither-mask
|
||
|
|
||
|
this disables dithering entirely. this is the fastest option, but the
|
||
|
lowest quality. not suggested in general unless you are really in need
|
||
|
of an extra few percent speed and are willing to have fairly awful
|
||
|
quality. but in general this is the standard rendering for most
|
||
|
"realtime graphics" if it has to drop to lower bit-depths, so it's
|
||
|
not anything unusual. just in the evas world the quality is considered
|
||
|
poor enough to be discouraged as evas's internal rendering is so much
|
||
|
higher quality.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
19 years ago
|
ENGINES:
|
||
13 years ago
|
|
||
|
All engines can be compiled statically inside libevas.so in order to
|
||
|
reduce runtime time at dynamically loaded modules. All you have to do
|
||
|
is to enable your chosen modules with "=static" suffix. If they depend
|
||
|
on software_generic (most do), you need that as well. Examples:
|
||
|
|
||
|
./configure --enable-static-software-generic --enable-software-xlib=static
|
||
|
|
||
|
|
||
|
--enable-software-xlib[=static]
|
||
19 years ago
|
|
||
|
this enables the software x11 rendering engine that renders to X drawable
|
||
13 years ago
|
targets using highly optimized software routines. there is no hardware
|
||
19 years ago
|
assist here. this engine requires X11 to be installed to build (and run).
|
||
13 years ago
|
This is a good generic engine that is fast and can run in X for good
|
||
19 years ago
|
development and debugging purposes.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-software-xcb[=static]
|
||
13 years ago
|
|
||
19 years ago
|
this enable the software xcb rendering engine. It allows the same
|
||
13 years ago
|
features than the software xlib engine. It require the XCB and XCBImage
|
||
13 years ago
|
libraries. For the test programs, XCBICCCM is also needed. It is not
|
||
|
recommended to use this as it's experimental and will create problems
|
||
|
with both ecore_evas and enlightenment itself.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
|
--enable-fb[=static]
|
||
19 years ago
|
|
||
16 years ago
|
this is the software framebuffer driving engine. this uses the linux
|
||
13 years ago
|
framebuffer device (/dev/fb{X}) and will currently just inherit the current
|
||
19 years ago
|
framebuffer settings on the fb device and use them to run in. this engine is
|
||
13 years ago
|
almost fully functional except for the fb management itself. this engine is
|
||
|
specifically geared towards people writing minimalist display systems for
|
||
|
embedded devices such as the ipaq, zaurus, etc. it also scales up to high-res
|
||
|
desktop systems as
|
||
|
well.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
|
--enable-directfb[=static]
|
||
19 years ago
|
|
||
|
this is the direct fb engine that uses direcftb (http://www.directfb.org) on
|
||
|
linux to access the framebuffer with (or maybe without) acceleration. for
|
||
|
people making set-top boxes or just wanting an alternative to X this is
|
||
|
really good. it may also be useful for embedded devices supported by
|
||
|
directfb that offer acceleration (otherwise the fb driver will likely be
|
||
13 years ago
|
faster). as such this engine is in relative disrepair and is not
|
||
|
maintained. use with great care.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-buffer[=static]
|
||
13 years ago
|
|
||
|
this enables the memory buffer rendering engine. this engine renders
|
||
|
to a region of memory that is considered to be a 32bit ARGB buffer of
|
||
|
pixels, allowing the results of rendering to be directly read out or
|
||
|
used again for other purposes.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-gl-x11[=static]
|
||
13 years ago
|
|
||
|
this is the opengl engine. it is intended for an x11 target (via xlib)
|
||
|
rather than framebuffer (even if you use EGL, the EGL flavor is
|
||
|
expected to be an x11 one). it is a full opengl based rendering engine
|
||
|
with all rendering implemented as a texture + triangle pipeline and
|
||
|
more. it also supports opengl-es2.0 and is reliant on modern opengl2.0+
|
||
|
shader support. this engine also supports the native surface api for
|
||
|
adopting pixmaps directly to textures for compositing.
|
||
|
|
||
13 years ago
|
some environment variables that control the opengl engine are as
|
||
|
follows:
|
||
|
|
||
|
export EVAS_GL_INFO=1
|
||
|
set this environment variable to enable output of opengl information
|
||
|
such as vendor, version, extensions, maximum texture size etc. unset
|
||
|
the environment variable to make the output quiet again.
|
||
|
|
||
|
export EVAS_GL_MEMINFO=1
|
||
|
set this environment variable to enable dumping of debug output
|
||
|
whenever textures are allocated or freed, giving the number of
|
||
|
textures of each time and how many kb worth of pixel data are
|
||
|
allocated for the textures. unset it again to stop this dumping of
|
||
|
information.
|
||
|
|
||
|
export EVAS_GL_WIN_RESURF=1
|
||
|
set this environment variable to enable the gl engine to try and
|
||
|
ddelete the window surface, if it can, when told to "dump resources"
|
||
|
to save memory, and re-allocate it when needed (when rendering
|
||
|
occurs). unset it to not have this behavior.
|
||
|
|
||
|
export EVAS_GL_CUTOUT_MAX=N
|
||
|
set this environment variable to the maximum number of rectangles
|
||
|
applied to a rendering of a primitive that "cut away" parts of that
|
||
|
primitive to render to avoid overdraw. default is 512. unset it to use
|
||
|
defaults, otherwise set N to the max value desired or to -1 for
|
||
|
"unlimited rectangles".
|
||
|
|
||
|
export EVAS_GL_PIPES_MAX=N
|
||
|
set the maximum number of parallel pending pipelines to N. the
|
||
|
default number is 32 (except on tegra2 where is it 1). evas keeps 1 (or more)
|
||
|
pipelines of gl draw commands in parallel at any time, to allow for merging
|
||
|
of non-overlapping draw commands to avoid texture binding and context
|
||
|
changes which allows for more streamlining of the draw arrays that are
|
||
|
filled and passed to gl per frame. the more pipelines exist, the more
|
||
|
chance evas has of merging draw commands that have the same modes,
|
||
|
texture source etc., but the more overhead there is in finding a
|
||
|
pipeline slot for the draw command to merge into, so there is a
|
||
|
compromise here between spare cpu resources and gpu pipelining. unset
|
||
|
this environment variable to let evas use it's default value.
|
||
|
|
||
|
export EVAS_GL_ATLAS_ALLOC_SIZE=N
|
||
|
set the size (width in pixels) of the evas texture atlas strips that
|
||
|
are allocated. the default is 1024. unset this to let evas use its
|
||
|
default. if this value is larger than the maximum texture size, then it
|
||
|
is limited to that maximum size internally anyway. evas tries to
|
||
|
store images together in "atlases". these are large single textures
|
||
|
that contain multiple images within the same texture. to do this evas
|
||
|
allocates a "wide strip" of pixels (that is a certain height) and then
|
||
|
tries to fit all images loaded that need textures into an existing
|
||
|
atlas texture before allocating a new one. evas tries a best fit
|
||
|
policy to avoid too much wasting of texture memory. texture atlas
|
||
|
textures are always allocated to be EVAS_GL_ATLAS_ALLOC_SIZE width,
|
||
|
and a multiple of EVAS_GL_ATLAS_SLOT_SIZE pixels high (if possible -
|
||
|
power of 2 limits are enforced if required).
|
||
|
|
||
|
export EVAS_GL_ATLAS_ALLOC_ALPHA_SIZE=N
|
||
|
this is exactly the same as EVAS_GL_ATLAS_ALLOC_SIZE, but for
|
||
|
"alpha" textures (texture used for font glyph data). it works exactly
|
||
|
the same way as for images, but per font glyph being put in an atlas
|
||
|
slot. the default value for this is 4096.
|
||
|
|
||
|
export EVAS_GL_ATLAS_MAX_W=N
|
||
|
set this to limit the maximum image size (width) that will be
|
||
|
allowed to go into a texture atlas. if an image exceeds this size, it
|
||
|
gets allocated its own separate individual texture (this is to help
|
||
|
minimize fragmentation). the default value for this is 512. if you set
|
||
|
this environment variable it will be overridden by the value it is set
|
||
|
to. the maximum value possible here is 512. you may set it to a
|
||
|
smaller value.
|
||
13 years ago
|
|
||
13 years ago
|
export EVAS_GL_ATLAS_MAX_H=N
|
||
|
this is the same as EVAS_GL_ATLAS_MAX_W, but sets the maximum height
|
||
|
of an image that is allowed into an atlas texture.
|
||
13 years ago
|
|
||
13 years ago
|
export EVAS_GL_ATLAS_SLOT_SIZE=N
|
||
|
this sets the height granularity for atlas strips. the default (and
|
||
|
minimum) value is 16. this means texture atlas strips are always a
|
||
|
multiple of 16 pixels high (16, 32, 48, 64, etc...). this allows you
|
||
|
to change the granularity to another value to avoid having more
|
||
|
textures allocated or try and consolidate allocations into fewer atlas
|
||
|
strips etc.
|
||
13 years ago
|
|
||
13 years ago
|
export EVAS_GL_NO_MAP_IMAGE_SEC=1
|
||
|
if this environment variable is set, it disabled support for the SEC
|
||
|
map image extension (a zero copy direct-texture access extension that
|
||
|
removes texture upload overhead). if you have problems with dynamic
|
||
|
evas images, and this is detected by evas (see EVAS_GL_INFO above to
|
||
|
find out if its detected), then setting this will allow it to be
|
||
|
forcibly disabled. unset it to allow auto-detection to keep working.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-gl-flavor-gles
|
||
|
|
||
|
this enables the opengl-es 2.0 flavor of opengl (as opposed to desktop
|
||
|
opengl) when building evas's gl-x11 engine above. this will be needed
|
||
|
if you are building evas for opengl-es 2.0 enabled embedded devices.
|
||
|
evas works on several opengl-es 2.0 compliant gpu's and gains more
|
||
|
testing and optimization regularly. it is also capable of
|
||
|
texture-from-pixmap support in opengl-es like it is in desktop opengl.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-gles-variety-sgx
|
||
|
|
||
|
this tells evas that you are building the gl-es engine for a
|
||
|
shader-compiler "sgx style" opengl-es 2.0 implementation. this is
|
||
|
where the shader compiler is provided at runtime and can accept the
|
||
|
shader glsl source and work
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-gles-variety-s3c6410
|
||
|
|
||
|
this tells evas that you have an s3c6410 style opengl-es
|
||
|
implementation that has an offline shader compiler and that needs
|
||
|
pre-compiled shader binaries (provided with evas). this has not been
|
||
|
tested in quite a while as the drivers and environment for this system
|
||
|
have gone missing
|
||
|
|
||
13 years ago
|
|
||
|
--enable-software-gdi[=static]
|
||
13 years ago
|
|
||
|
windows gdi based engine for evas
|
||
|
|
||
13 years ago
|
|
||
|
--enable-software-ddraw[=static]
|
||
13 years ago
|
|
||
|
windows direct-draw engine for evas
|
||
|
|
||
13 years ago
|
|
||
|
--enable-direct3d[=static]
|
||
13 years ago
|
|
||
|
evas direct3d engine (experimental)
|
||
|
|
||
13 years ago
|
|
||
|
--enable-software-sdl[=static]
|
||
16 years ago
|
|
||
|
this is the sdl engine that uses sdl library (http://www.libsdl.org). This
|
||
13 years ago
|
library should work on many operating system. the buffer is
|
||
|
software-rendered with evas's default software rendering core.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-gl-sdl[=static]
|
||
13 years ago
|
|
||
|
opengl (and opengl-es2.0) rendering engine that uses sdl as the front
|
||
|
end interface. see --enable-gl-x11 etc. for information.
|
||
|
|
||
13 years ago
|
------------------------------------------------------------------------------
|
||
19 years ago
|
CPU:
|
||
|
--enable-cpu-c
|
||
|
|
||
13 years ago
|
this enabled the c code. you can actually build the code without the c
|
||
19 years ago
|
fallback code and only have the mmx routines for example. it is suggested to
|
||
13 years ago
|
always use this regardless unless you have some definite size issues with the
|
||
19 years ago
|
code.
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-cpu-mmx
|
||
|
|
||
13 years ago
|
this enables the mmx optimized routines. this works for pentium, pentium2,
|
||
19 years ago
|
pentium3, pentium4, athlon and duron processors. it can get quite
|
||
|
considerable speedups, souse it if you can. ppc owners just have to live with
|
||
|
the c fallback functions unfortunately as no one has provided any ALTIVEC asm
|
||
|
routines yet. :) arm owners will also have to rely on the c fallback
|
||
|
routines as i haven't managed to come up with any arm assembly that actually
|
||
13 years ago
|
can beat the c code (when compiled with all optimizations) in speed.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-cpu-sse
|
||
|
|
||
13 years ago
|
this enables sse optimizations available in he pentium3 and 4 cpus (not
|
||
19 years ago
|
athlon and duron or pentium 2 or pentium cpu's). ppc owners just have to
|
||
|
live with the c fallback functions unfortunately as no one has provided any
|
||
|
ALTIVEC asm routines yet. :) arm owners will also have to rely on the c
|
||
|
fallback routines as i haven't managed to come up with any arm assembly that
|
||
16 years ago
|
actually can beat the c code (when compiled with all optimizations) in speed.
|
||
19 years ago
|
|
||
12 years ago
|
--enable-cpu-sse3
|
||
|
|
||
|
this enables sse3 optimizations available in the Intel Pentium4, Core, Xeon,
|
||
|
and Atom processors, as well as the AMD Athlon64, Phenom, Opteron, and Turion
|
||
|
processors.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-cpu-neon
|
||
|
|
||
|
This enables support for the Arm Cortex-A8 and later Neon register
|
||
13 years ago
|
set. In particular it will use neon optimized code for rotations and
|
||
13 years ago
|
drawing with the software engines. Open GL based renderers will gain
|
||
|
nothing from the use of neon.
|
||
|
|
||
|
To use neon with gcc-4.4 you need a post-2009 gcc and options
|
||
|
something like: -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon
|
||
13 years ago
|
Note that this slightly slows down non-optimized parts of evas but
|
||
13 years ago
|
the gains in drawing are more then worth it overall.
|
||
|
|
||
|
This is enabled by default, and turns off if a small test program is
|
||
|
unable to compile.
|
||
13 years ago
|
|
||
13 years ago
|
Performance is at least 50%, and in some real world tests approaches
|
||
|
100%.
|
||
|
|
||
|
If you have any issues with neon, please report them to either the
|
||
13 years ago
|
edevel mailing list or Brett Nash <nash@nash.id.au>
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
------------------------------------------------------------------------------
|
||
19 years ago
|
IMAGE LOADERS:
|
||
13 years ago
|
--enable-image-loader-png[=static]
|
||
19 years ago
|
|
||
|
this enables the loader code that loads png files using libpng. there may be
|
||
|
call for embedded devices later that have custom written small image
|
||
16 years ago
|
loaders that uses less disk space than libpng to load custom format images.
|
||
19 years ago
|
for now this is the only loader so you may as well include it.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-jpeg[=static]
|
||
19 years ago
|
|
||
13 years ago
|
this enables the loader code that loads jpeg files using libjpeg. this
|
||
|
loader also supports load options to pre-scale jpeg images down to
|
||
|
provide much faster load times while also getting downscaling by 1/2,
|
||
|
1/4 or 1/8th the size in each dimension for "free". with an added
|
||
|
patch to libjpeg7, it can also fast-decode a specific region of a jpeg
|
||
|
file (without the patch it take a slow-path to do this).
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-edb[=static]
|
||
13 years ago
|
|
||
|
edb image loader- can load images inside edb database files. not very
|
||
|
useful as edb itself is no longer used by enlightenment. may be
|
||
|
removed at some point, so unless you have a burning need for this,
|
||
|
don't use edb files to store image data and rely on this loader
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-eet[=static]
|
||
13 years ago
|
|
||
|
loads image data from eet files. eet files are the backing for edje
|
||
|
storage, so this is needed for edje to work. it is very useful as it
|
||
|
can load an image from anywhere in the eet archive by key value so eet
|
||
|
files are like "zip" files where you can pack a whole lot of image and
|
||
|
other data together and just pick out the pieces you need at runtime.
|
||
|
requires the eet library.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-gif[=static]
|
||
13 years ago
|
|
||
|
gif image loader. gif is an obsolete format, but due to its longevity,
|
||
|
sitll has lots of existing data around.
|
||
|
|
||
13 years ago
|
NOTE: evas has no notion of time, thus animated gif file are not
|
||
|
supported!
|
||
|
|
||
|
|
||
|
--enable-image-loader-pmaps[=static]
|
||
13 years ago
|
|
||
|
ppm/pnm/pgm image loader that can load the "pnm" style image format.
|
||
|
not very common, but the files are simple raw RGB, greyscale image or
|
||
|
bitmap data in binary or ascii format
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-svg[=static]
|
||
13 years ago
|
|
||
11 years ago
|
this loader can load svg files via esvg (thus it is a dependency). This
|
||
|
loader supports load options to set the dpi to decode the svg at etc. which
|
||
|
can then be used to create scalable images that scale to any size without
|
||
|
becoming blocky or blurry, if the source is an svg file.
|
||
12 years ago
|
|
||
|
Esvg can be found here:
|
||
|
|
||
|
http://code.google.com/p/enesim/
|
||
|
|
||
|
Install (in that order):
|
||
|
|
||
|
enesim
|
||
|
ender
|
||
|
etch
|
||
|
egueb
|
||
13 years ago
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-tiff[=static]
|
||
13 years ago
|
|
||
|
this loader uses libtiff to load tiff image files
|
||
|
|
||
11 years ago
|
--enable-image-loader-webp[=static]
|
||
|
|
||
|
this loader uses libwebp to load webp image files
|
||
13 years ago
|
|
||
|
--enable-image-loader-xpm[=static]
|
||
13 years ago
|
|
||
|
this is an xpm format image loader. xpm format images are ascii files
|
||
|
that look like c/c++ source code that contain images. these files are
|
||
|
old-fashioned unix+x11 images you may encounter, but are inefficient
|
||
|
for storage and decoding and have been superseded by png files in
|
||
|
almost every way
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-bmp[=static]
|
||
13 years ago
|
|
||
|
this enables the bmp image format loader. note that there seems to be
|
||
|
a disagreement on 32bit bmp format images where alpha channels are
|
||
|
concerned and you may run into issues with bmps generated by the gimp
|
||
|
that have alpha channels. there is a problem where they don't seem to
|
||
|
be spec-conformant.
|
||
|
|
||
13 years ago
|
|
||
|
--enable-image-loader-tga[=static]
|
||
13 years ago
|
|
||
|
this loader load tga format files. these files are very old-fashioned
|
||
|
but found often in the 3d graphics world.
|
||
|
|
||
13 years ago
|
|
||
11 years ago
|
--enable-image-loader-generic[=static]
|
||
|
|
||
|
this loader will execute a given binary to decode an image and read
|
||
|
the resulting image data via a shared memory segment, a mmaped file or
|
||
|
stdout. it uses the command-line to pass the filename and any load
|
||
|
parameters, and reads stdout from the loader binary to get metadata like
|
||
|
width, height, alpha channel flag and location of pixel data. this
|
||
|
loader has no dependencies as the binaries run are to be found in
|
||
|
PREIFX/lib/evas/utils and are named evas_image_loader.EXTENSION where
|
||
|
.EXTENSION is replaced by the filename extension to be decoded. if
|
||
|
this binary does not exist then evas_image_loader (with no extension) is
|
||
|
tried as a last fallback allowing it to handle "all cases".
|
||
|
|
||
|
since this loader doesn't use any libraires, it relies on runtime
|
||
|
dependencies and executables existing in the utils directory. note that
|
||
|
images loaded via this mechanism will have slower load times due to the
|
||
|
overhead of execution of another binary, but any instability in the
|
||
|
loaders themselves will not affect the application using evas.
|
||
|
|
||
|
this also means that licenses such as GPL for the binaries in this
|
||
|
utils directory do not affect evas and the applications or libraries
|
||
|
using evas.
|
||
|
|
||
|
there is a separately released evas_generic_loaders package which
|
||
|
builds stand-alone binaries that can do this style of decoding for for
|
||
|
evas. this package currently handles XCF, PDF, PS, RAW, SVG (via
|
||
|
librsvg) and video formats (via gstreamer).
|
||
|
|
||
|
|
||
13 years ago
|
------------------------------------------------------------------------------
|
||
13 years ago
|
FONT LOADERS:
|
||
13 years ago
|
--enable-font-loader-eet[=static]
|
||
13 years ago
|
|
||
|
this loader can load font (ttf) files directly from eet archives like
|
||
|
the eet image loader. requires the eet library
|
||
19 years ago
|
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
19 years ago
|
CONVERTERS:
|
||
13 years ago
|
--enable-convert-yuv
|
||
|
|
||
|
this enables an optimized yuv (yv12 601 colorspace) to ARGB32
|
||
|
converter in evas
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-565
|
||
|
|
||
|
the most common converter you'll want for 16bpp. this means 5 bits for red,
|
||
|
6 bits for green and 5 bits for blue are used.
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-555
|
||
|
|
||
|
this is a converter for what many people know as "15 bit" color. you might
|
||
|
want to enable this for X output as it used to be common to find many cards
|
||
|
that do this.
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-444
|
||
|
|
||
|
this converter outputs to 12bit packed (int 16 bit WORDS).
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-ipq
|
||
|
|
||
|
this converter was written specifically for the ipaq (and may apply to
|
||
|
similarly configured devices) because it lies about its screen depth. it
|
||
|
says it is 16bit 565 (that means 5 upper bits of the WORD are red, the next 6
|
||
|
bits are for green abd the next 5 for blue) but in fact only the upper 4
|
||
|
bits of each color component (red green and blue) are significant and work,
|
||
|
so effectively the display is 12 bits of color, not 16, but padded out to
|
||
|
fill 16bits, with unused bits in the color masks. X on the ipaq advertises
|
||
|
it as a full 16bpp 565 display (i can't remember what the linux framebuffer
|
||
|
advertised it as) and so many lumps of code can be fooled into rendering
|
||
|
data badly because they think the output will look as the expect. This
|
||
13 years ago
|
renderer assumes the upper 4 bits fo each color primitive only are
|
||
19 years ago
|
significant and renders accordingly. this produces nice quality images on
|
||
|
the ipaq and even still works in 16bpp 565 on your pc. it is highly
|
||
|
recommended to use this renderer if your target is an ipaq or your device
|
||
13 years ago
|
displays similar qualities of the ipaq for display purposes.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-rot-0
|
||
|
|
||
|
this enables the 16bpp converters to run with 0 degrees rotation - this is
|
||
16 years ago
|
normal display and you should really include this (though it is optional if you
|
||
19 years ago
|
only ever want to do portrait mode - perhaps like on an ipaq embedded device)
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-16-rgb-rot-270
|
||
|
|
||
13 years ago
|
this enables the portrait mode (270 degree rotation) converters for 16bpp.
|
||
19 years ago
|
this is the standard display mode for things like pocketpc on the ipaq and
|
||
13 years ago
|
the zaurus etc. this is an optimized part of the rendering pipeline to allow
|
||
19 years ago
|
portrait display with a much lower overhead than doing it through X.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-16-rgb-rot-180
|
||
|
|
||
|
same as --enable-convert-16-rgb-rot-270 but for 180 degrees
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-16-rgb-rot-90
|
||
|
|
||
|
same as --enable-convert-16-rgb-rot-270 but for 90 degrees
|
||
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-24-rgb-888
|
||
|
|
||
13 years ago
|
this converts evas's 32bit ARGB to 24bit RGB packed format for output
|
||
|
if needed
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-24-bgr-888
|
||
|
|
||
13 years ago
|
this converts evas's 32bit ARGB to 24bit packed BGR format for output
|
||
|
if needed
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-32-rgb-8888
|
||
|
|
||
13 years ago
|
32bit RGB output conversion support. byteswapping compared to evas's
|
||
|
native colorspace
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-32-bgr-8888
|
||
|
|
||
11 years ago
|
conversion (reduces to a memory copy) from evas's native colorspace to
|
||
13 years ago
|
the same color format.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-32-rgb-rot-0
|
||
|
|
||
13 years ago
|
copies without rotation evas's native image format
|
||
19 years ago
|
|
||
13 years ago
|
|
||
19 years ago
|
--enable-convert-32-rgb-rot-270
|
||
|
|
||
13 years ago
|
copies evas's native ARGB32 pixels but at a rotation of 270 degrees.
|
||
19 years ago
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-32-rgb-rot-180
|
||
19 years ago
|
|
||
13 years ago
|
same as --enable-convert-32-rgb-rot-270 but for 180 degrees
|
||
19 years ago
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-32-rgb-rot-90
|
||
|
|
||
|
same as --enable-convert-32-rgb-rot-270 but for 90 degrees
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-24-rgb-ezx
|
||
|
|
||
|
a special colorspace handler for 18bit color packed into 24bit output
|
||
|
(where only 6 bits per r, g and b byte are used). the only known
|
||
|
platform that did this was the motorola esx based phones that used
|
||
|
qtopia originally and have open ezx ports for them.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-gry-1
|
||
|
|
||
|
enable 8bit gray to 1 bit black & white converter
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-gry-16
|
||
|
|
||
|
8bit grey to 16 level grayscale converter
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-grayscale-64
|
||
|
|
||
|
8bit grey to 64 level grayscale converter
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-332
|
||
13 years ago
|
|
||
13 years ago
|
enable converter from 32bit ARGB to 8bit color "332" colorspace (3bits
|
||
|
red, 3 bits green, 2 bits blue)
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-666
|
||
|
|
||
|
enable converter from 32bit ARGB to 8bit color "216" "websafe"
|
||
|
colorspace (6 values for red, 6 for green and 6 for blue - 6x6x6 being
|
||
|
216 colors).
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-232
|
||
|
|
||
|
same as convert-8-rgb-332 but 2 bits red, 3 green, 2 blue
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-222
|
||
|
|
||
|
same as convert-8-rgb-332 but 2 bits red, 2 green, 2 blue
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-221
|
||
|
|
||
|
same as convert-8-rgb-332 but 2 bits red, 2 green, 1 blue
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-121
|
||
|
|
||
|
same as convert-8-rgb-332 but 1 bit red, 2 green, 1 blue
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-convert-8-rgb-111
|
||
|
|
||
|
same as convert-8-rgb-332 but 1 bit red, 1 green, 1 blue. this is the
|
||
|
lowest sized colorspace supported for rgb (3bits, 8 color).
|
||
|
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
13 years ago
|
MISC:
|
||
|
--enable-pthreads
|
||
|
|
||
|
this enables pthread support in evas so multiple threads may run
|
||
|
internally for parallel rendering, loading etc.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-async-events
|
||
|
|
||
|
this provides the ability for evas to have an asynchronous event
|
||
|
notification pipe to provide events when background threads are done
|
||
|
with tasks, like pre-loading image files
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-async-preload
|
||
|
|
||
11 years ago
|
evas can load images (preload) in the background using a thread
|
||
13 years ago
|
if you ask it to, and provide events when done. this goes hand-in-hand
|
||
|
with --enable-pthreads and --enable-async-events. you really want all
|
||
|
of these available.
|
||
|
|
||
13 years ago
|
|
||
11 years ago
|
--enable-pipe-render **NOT ON BY DEFAULT DUE TO DUBIOUS IMPROVEMENTS**
|
||
13 years ago
|
|
||
|
this enables a multiple-thread renderer that divides the rendering
|
||
|
into N regions (1 per core) to speed up rendering in software when you
|
||
|
have multiple cpu cores.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-fontconfig
|
||
|
|
||
|
this enables fontconfig support for loading font files by using
|
||
|
generic fontconfig font names and styles. you really should use this
|
||
|
by default on any linux/unix platform for universal font support.
|
||
|
|
||
13 years ago
|
|
||
13 years ago
|
--enable-fribidi
|
||
13 years ago
|
|
||
13 years ago
|
this enables support for the fribidi library to have right to left and
|
||
|
left to right font rendering so languges such as arabic, hebrew and
|
||
|
other "RTL" langauges display properly.
|
||
13 years ago
|
|
||
13 years ago
|
|
||
12 years ago
|
--enable-harfbuzz
|
||
|
|
||
|
this enables support for the harfbuzz shaping library for complex
|
||
|
shaping support in arabic, hindi and other similar languages.
|
||
|
|
||
|
--enable-liblinebreak
|
||
|
|
||
|
this enables support of complex line breaking rules using liblinebreak.
|
||
|
|
||
13 years ago
|
--enable-evas-magic-debug
|
||
13 years ago
|
|
||
13 years ago
|
this allows you to enable and disable evas's extra magic number
|
||
13 years ago
|
checks. these allow better stability with runtime object magic
|
||
|
"number" checks to make sure you are accessing a real object in memory
|
||
|
of the right type, and will avoid doing "bad things" if they detect
|
||
|
the wrong object type being passed in. if you are absolutely sure your
|
||
|
system has no bugs in accessing objects of the wrong type with the
|
||
|
wrong calls, you can gain some small performance by disabling this.
|
||
13 years ago
|
|
||
13 years ago
|
|
||
|
------------------------------------------------------------------------------
|
||
17 years ago
|
NOTES:
|
||
|
|
||
16 years ago
|
For the arm optimizations you want to try:
|
||
17 years ago
|
export CFLAGS="-O2 -march=armv5te -mcpu=arm1136jf-s -fomit-frame-pointer"
|
||
14 years ago
|
|
||
|
To enable the async renderer compile with:
|
||
|
--enable-async-render
|
||
|
and also runtime set this environment variable:
|
||
|
export EVAS_RENDER_MODE=non-blocking
|
||
13 years ago
|
|
||
|
For compilation with MinGW, fnmatch.h is probably missing. That file can be
|
||
|
found here:
|
||
|
http://www.koders.com/c/fid2B518462CB1EED3D4E31E271DB83CD1582F6EEBE.aspx
|
||
|
It should be installed in the mingw include directory.
|
||
13 years ago
|
|