aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/README
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-04 18:41:13 +1000
committerDavid Walter Seikel2012-01-04 18:41:13 +1000
commitdd7595a3475407a7fa96a97393bae8c5220e8762 (patch)
treee341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/evas/README
parentAdd the skeleton. (diff)
downloadSledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to '')
-rw-r--r--libraries/evas/README868
1 files changed, 868 insertions, 0 deletions
diff --git a/libraries/evas/README b/libraries/evas/README
new file mode 100644
index 0000000..dd87eef
--- /dev/null
+++ b/libraries/evas/README
@@ -0,0 +1,868 @@
1Evas 1.1.0
2
3******************************************************************************
4
5 FOR ANY ISSUES PLEASE EMAIL:
6 enlightenment-devel@lists.sourceforge.net
7
8******************************************************************************
9
10Requirements:
11-------------
12
13Must:
14 libc
15 libm
16 eina (1.1.0 or better)
17 freetype (2.1.9 or better)
18
19Recommended:
20 libX11 + libXext + libXrender
21 OpenGL2.0 or OpenGL-ES 2.0
22 fontconfig
23 libpng
24 libjpeg (6.0 or better)
25 eet (1.5.0 or better)
26 firbidi
27 harfbuzz
28 liblinebreak
29
30Optional:
31 XCB SDL OpenGL librsvg libtiff libgif edb DirectFB evas_generic_loaders
32
33Evas is a clean display canvas API for several target display systems
34that can draw anti-aliased text, smooth super and sub-sampled scaled
35images, alpha-blend objects much and more.
36
37Evas is designed to be portable to different display systems. Evas uses very
38little RAM too (try profiling it in memprof if you want to
39know) most of the ram allocated, if you look, is for freetype itself,
40image pixel data, and font glyph data. You can't really avoid this, though
41evas tries to share this data as much as possible and not duplicate where it
42can. Feel free to point me at sensible memory optimizations etc. though :) I
43want this baby to be lean, mean tiny, fast and do everything from your
44massive multi-cpu desktop with gobs of ram and disk to a tiny watch.
45
46Evas also supports full UTF-8 for text object strings, thus allowing for
47full internationalized text strings (if your font gives you all the
48characters). I've tested with quite a few fonts and it works quite well.
49Though this requires a unicode compatible font with unicode charmap support
50(cyberbit is quite good actually as a font). For now Evas draws the fonts
51only from left to right, so arabic, hebrew etc. won't display quite right,
52direction-wise, but the characters do.
53
54------------------------------------------------------------------------------
55COMPILING AND INSTALLING:
56
57 ./configure
58 make
59(as root unless you are installing in your users directories):
60 make install
61
62if you want to know what options to enable
63./configure --help
64
65Evas's rendering code assumes a decently optimizing compiler. For
66example gcc with -O2 -march=nocona for example (compile for core2 duo
67x86 or better). You may choose not to compile for a very modern
68architecture, and Evas still has MMX/SSE, NEON and other hand-crafted
69assembly, but not for everything, so make use of your compiler
70optimizing as much as possible. At least use -O2 or equivalents.
71
72Notes:
73 the small dither mask is faster on the ipaq, but is not as good looking. on
74 desktop machines it makes no speed difference so only use
75 --enable-small-dither-mask if you really need the speed for low depth
76 you need at least 1 image loader if you want to load images.
77 gcc 3.0.x on solaris screws up the jpeg code so erroring out doesn't work.
78 use gcc 3.2 on solaris.
79
80notes on features (--enable-FEATURE enables it and --disable-FEATURE
81disables it, some being enabled or disabled by default or if
82dependencies are found):
83
84
85------------------------------------------------------------------------------
86SCALING:
87--enable-scale-sample
88
89this enables the sampling scaler code. this is the fastest image scaling
90code, but also the lowest quality. when scaling up pixels will become blocky
91and when scaling down you will see shimmering/aliasing artifacts. this is a
92speed vs. quality tradeoff
93
94
95--enable-scale-smooth
96
97this is the nicest looking scaler that is not that much slower than
98tri-linear, but it looks really good.
99
100
101------------------------------------------------------------------------------
102DITHERING:
103--enable-small-dither-mask
104
105this uses a 4x4 dither mask instead of 128x128. on desktop boxes these days
106(pentium, pentium2, amd etc.) the speed difference is not really measurable,
107but the quality of the 128x128 dither mask is quite a lot better. patterns
108of dithering are much less noticeable, so it is recommended to not enable
109this unless you are struggling for speed. the compaq ipaq for example shows
110a slowdown with this large a dither mask so enabling a small dither mask is
111recommended unless you really want to forgo the speed.
112
113
114--enable-line-dither-mask
115
116this is a faster alternative to the small or large dither masks above.
117this dithers only on an alternating-line basis. this only provides 1
118intermediate "dither" level whose odd and even pixels alternate
119between the 2 closest colors available, but it is very fast. almost as
120fast as no dithering. quality though will not be as good as small or
121default "large" dither masks.
122
123
124--enable-no-dither-mask
125
126this disables dithering entirely. this is the fastest option, but the
127lowest quality. not suggested in general unless you are really in need
128of an extra few percent speed and are willing to have fairly awful
129quality. but in general this is the standard rendering for most
130"realtime graphics" if it has to drop to lower bit-depths, so it's
131not anything unusual. just in the evas world the quality is considered
132poor enough to be discouraged as evas's internal rendering is so much
133higher quality.
134
135
136------------------------------------------------------------------------------
137ENGINES:
138
139All engines can be compiled statically inside libevas.so in order to
140reduce runtime time at dynamically loaded modules. All you have to do
141is to enable your chosen modules with "=static" suffix. If they depend
142on software_generic (most do), you need that as well. Examples:
143
144 ./configure --enable-static-software-generic --enable-software-xlib=static
145
146
147--enable-software-xlib[=static]
148
149this enables the software x11 rendering engine that renders to X drawable
150targets using highly optimized software routines. there is no hardware
151assist here. this engine requires X11 to be installed to build (and run).
152This is a good generic engine that is fast and can run in X for good
153development and debugging purposes.
154
155
156--enable-software-xcb[=static]
157
158this enable the software xcb rendering engine. It allows the same
159features than the software xlib engine. It require the XCB and XCBImage
160libraries. For the test programs, XCBICCCM is also needed. It is not
161recommended to use this as it's experimental and will create problems
162with both ecore_evas and enlightenment itself.
163
164
165--enable-fb[=static]
166
167this is the software framebuffer driving engine. this uses the linux
168framebuffer device (/dev/fb{X}) and will currently just inherit the current
169framebuffer settings on the fb device and use them to run in. this engine is
170almost fully functional except for the fb management itself. this engine is
171specifically geared towards people writing minimalist display systems for
172embedded devices such as the ipaq, zaurus, etc. it also scales up to high-res
173desktop systems as
174well.
175
176
177--enable-directfb[=static]
178
179this is the direct fb engine that uses direcftb (http://www.directfb.org) on
180linux to access the framebuffer with (or maybe without) acceleration. for
181people making set-top boxes or just wanting an alternative to X this is
182really good. it may also be useful for embedded devices supported by
183directfb that offer acceleration (otherwise the fb driver will likely be
184faster). as such this engine is in relative disrepair and is not
185maintained. use with great care.
186
187
188--enable-buffer[=static]
189
190this enables the memory buffer rendering engine. this engine renders
191to a region of memory that is considered to be a 32bit ARGB buffer of
192pixels, allowing the results of rendering to be directly read out or
193used again for other purposes.
194
195
196--enable-gl-x11[=static]
197
198this is the opengl engine. it is intended for an x11 target (via xlib)
199rather than framebuffer (even if you use EGL, the EGL flavor is
200expected to be an x11 one). it is a full opengl based rendering engine
201with all rendering implemented as a texture + triangle pipeline and
202more. it also supports opengl-es2.0 and is reliant on modern opengl2.0+
203shader support. this engine also supports the native surface api for
204adopting pixmaps directly to textures for compositing.
205
206some environment variables that control the opengl engine are as
207follows:
208
209export EVAS_GL_INFO=1
210 set this environment variable to enable output of opengl information
211such as vendor, version, extensions, maximum texture size etc. unset
212the environment variable to make the output quiet again.
213
214export EVAS_GL_MEMINFO=1
215 set this environment variable to enable dumping of debug output
216whenever textures are allocated or freed, giving the number of
217textures of each time and how many kb worth of pixel data are
218allocated for the textures. unset it again to stop this dumping of
219information.
220
221export EVAS_GL_WIN_RESURF=1
222 set this environment variable to enable the gl engine to try and
223ddelete the window surface, if it can, when told to "dump resources"
224to save memory, and re-allocate it when needed (when rendering
225occurs). unset it to not have this behavior.
226
227export EVAS_GL_CUTOUT_MAX=N
228 set this environment variable to the maximum number of rectangles
229applied to a rendering of a primitive that "cut away" parts of that
230primitive to render to avoid overdraw. default is 512. unset it to use
231defaults, otherwise set N to the max value desired or to -1 for
232"unlimited rectangles".
233
234export EVAS_GL_PIPES_MAX=N
235 set the maximum number of parallel pending pipelines to N. the
236default number is 32 (except on tegra2 where is it 1). evas keeps 1 (or more)
237pipelines of gl draw commands in parallel at any time, to allow for merging
238of non-overlapping draw commands to avoid texture binding and context
239changes which allows for more streamlining of the draw arrays that are
240filled and passed to gl per frame. the more pipelines exist, the more
241chance evas has of merging draw commands that have the same modes,
242texture source etc., but the more overhead there is in finding a
243pipeline slot for the draw command to merge into, so there is a
244compromise here between spare cpu resources and gpu pipelining. unset
245this environment variable to let evas use it's default value.
246
247export EVAS_GL_ATLAS_ALLOC_SIZE=N
248 set the size (width in pixels) of the evas texture atlas strips that
249are allocated. the default is 1024. unset this to let evas use its
250default. if this value is larger than the maximum texture size, then it
251is limited to that maximum size internally anyway. evas tries to
252store images together in "atlases". these are large single textures
253that contain multiple images within the same texture. to do this evas
254allocates a "wide strip" of pixels (that is a certain height) and then
255tries to fit all images loaded that need textures into an existing
256atlas texture before allocating a new one. evas tries a best fit
257policy to avoid too much wasting of texture memory. texture atlas
258textures are always allocated to be EVAS_GL_ATLAS_ALLOC_SIZE width,
259and a multiple of EVAS_GL_ATLAS_SLOT_SIZE pixels high (if possible -
260power of 2 limits are enforced if required).
261
262export EVAS_GL_ATLAS_ALLOC_ALPHA_SIZE=N
263 this is exactly the same as EVAS_GL_ATLAS_ALLOC_SIZE, but for
264"alpha" textures (texture used for font glyph data). it works exactly
265the same way as for images, but per font glyph being put in an atlas
266slot. the default value for this is 4096.
267
268export EVAS_GL_ATLAS_MAX_W=N
269 set this to limit the maximum image size (width) that will be
270allowed to go into a texture atlas. if an image exceeds this size, it
271gets allocated its own separate individual texture (this is to help
272minimize fragmentation). the default value for this is 512. if you set
273this environment variable it will be overridden by the value it is set
274to. the maximum value possible here is 512. you may set it to a
275smaller value.
276
277export EVAS_GL_ATLAS_MAX_H=N
278 this is the same as EVAS_GL_ATLAS_MAX_W, but sets the maximum height
279of an image that is allowed into an atlas texture.
280
281export EVAS_GL_ATLAS_SLOT_SIZE=N
282 this sets the height granularity for atlas strips. the default (and
283minimum) value is 16. this means texture atlas strips are always a
284multiple of 16 pixels high (16, 32, 48, 64, etc...). this allows you
285to change the granularity to another value to avoid having more
286textures allocated or try and consolidate allocations into fewer atlas
287strips etc.
288
289export EVAS_GL_NO_MAP_IMAGE_SEC=1
290 if this environment variable is set, it disabled support for the SEC
291map image extension (a zero copy direct-texture access extension that
292removes texture upload overhead). if you have problems with dynamic
293evas images, and this is detected by evas (see EVAS_GL_INFO above to
294find out if its detected), then setting this will allow it to be
295forcibly disabled. unset it to allow auto-detection to keep working.
296
297
298--enable-gl-flavor-gles
299
300this enables the opengl-es 2.0 flavor of opengl (as opposed to desktop
301opengl) when building evas's gl-x11 engine above. this will be needed
302if you are building evas for opengl-es 2.0 enabled embedded devices.
303evas works on several opengl-es 2.0 compliant gpu's and gains more
304testing and optimization regularly. it is also capable of
305texture-from-pixmap support in opengl-es like it is in desktop opengl.
306
307
308--enable-gles-variety-sgx
309
310this tells evas that you are building the gl-es engine for a
311shader-compiler "sgx style" opengl-es 2.0 implementation. this is
312where the shader compiler is provided at runtime and can accept the
313shader glsl source and work
314
315
316--enable-gles-variety-s3c6410
317
318this tells evas that you have an s3c6410 style opengl-es
319implementation that has an offline shader compiler and that needs
320pre-compiled shader binaries (provided with evas). this has not been
321tested in quite a while as the drivers and environment for this system
322have gone missing
323
324
325--enable-software-gdi[=static]
326
327windows gdi based engine for evas
328
329
330--enable-software-ddraw[=static]
331
332windows direct-draw engine for evas
333
334
335--enable-direct3d[=static]
336
337evas direct3d engine (experimental)
338
339
340--enable-software-sdl[=static]
341
342this is the sdl engine that uses sdl library (http://www.libsdl.org). This
343library should work on many operating system. the buffer is
344software-rendered with evas's default software rendering core.
345
346
347--enable-gl-sdl[=static]
348
349opengl (and opengl-es2.0) rendering engine that uses sdl as the front
350end interface. see --enable-gl-x11 etc. for information.
351
352
353--enable-software-8-x11[=static]
354
3558bit only rendering core. intended for greyscale output on things like
356e-paper or simplistic greyscale LCD devices which have no color, such
357as ebook readers.
358
359if compiling with =static suffix, then must
360"./configure --enable-static-software-8" as well.
361
362
363--enable-software-16-x11[=static]
364
36516bit specific renderer. lower quality than the default. also limited
366in abilities (no support for smooth scale or transformations/map). in
367a state of disrepair. do not use unless your hardware is just 16bpp
368and very limited in CPU and memory.
369
370if compiling with =static suffix, then must
371"./configure --enable-static-software-16" as well.
372
373
374--enable-software-16-ddraw[=static]
375
37616bit renderer for direct-draw. same as software-16-x11 - don't use.
377in disrepair.
378
379if compiling with =static suffix, then must
380"./configure --enable-static-software-16" as well.
381
382
383--enable-software-16-wince[=static]
384
385same as software-16-ddraw but for windows-ce. in disrepair. don't use.
386
387if compiling with =static suffix, then must
388"./configure --enable-static-software-16" as well.
389
390
391------------------------------------------------------------------------------
392CPU:
393--enable-cpu-c
394
395this enabled the c code. you can actually build the code without the c
396fallback code and only have the mmx routines for example. it is suggested to
397always use this regardless unless you have some definite size issues with the
398code.
399
400
401--enable-cpu-mmx
402
403this enables the mmx optimized routines. this works for pentium, pentium2,
404pentium3, pentium4, athlon and duron processors. it can get quite
405considerable speedups, souse it if you can. ppc owners just have to live with
406the c fallback functions unfortunately as no one has provided any ALTIVEC asm
407routines yet. :) arm owners will also have to rely on the c fallback
408routines as i haven't managed to come up with any arm assembly that actually
409can beat the c code (when compiled with all optimizations) in speed.
410
411
412--enable-cpu-sse
413
414this enables sse optimizations available in he pentium3 and 4 cpus (not
415athlon and duron or pentium 2 or pentium cpu's). ppc owners just have to
416live with the c fallback functions unfortunately as no one has provided any
417ALTIVEC asm routines yet. :) arm owners will also have to rely on the c
418fallback routines as i haven't managed to come up with any arm assembly that
419actually can beat the c code (when compiled with all optimizations) in speed.
420
421--enable-cpu-sse3
422
423this enables sse3 optimizations available in the Intel Pentium4, Core, Xeon,
424and Atom processors, as well as the AMD Athlon64, Phenom, Opteron, and Turion
425processors.
426
427
428--enable-cpu-neon
429
430This enables support for the Arm Cortex-A8 and later Neon register
431set. In particular it will use neon optimized code for rotations and
432drawing with the software engines. Open GL based renderers will gain
433nothing from the use of neon.
434
435To use neon with gcc-4.4 you need a post-2009 gcc and options
436something like: -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon
437Note that this slightly slows down non-optimized parts of evas but
438the gains in drawing are more then worth it overall.
439
440This is enabled by default, and turns off if a small test program is
441unable to compile.
442
443Performance is at least 50%, and in some real world tests approaches
444100%.
445
446If you have any issues with neon, please report them to either the
447edevel mailing list or Brett Nash <nash@nash.id.au>
448
449
450------------------------------------------------------------------------------
451IMAGE LOADERS:
452--enable-image-loader-png[=static]
453
454this enables the loader code that loads png files using libpng. there may be
455call for embedded devices later that have custom written small image
456loaders that uses less disk space than libpng to load custom format images.
457for now this is the only loader so you may as well include it.
458
459
460--enable-image-loader-jpeg[=static]
461
462this enables the loader code that loads jpeg files using libjpeg. this
463loader also supports load options to pre-scale jpeg images down to
464provide much faster load times while also getting downscaling by 1/2,
4651/4 or 1/8th the size in each dimension for "free". with an added
466patch to libjpeg7, it can also fast-decode a specific region of a jpeg
467file (without the patch it take a slow-path to do this).
468
469
470--enable-image-loader-edb[=static]
471
472edb image loader- can load images inside edb database files. not very
473useful as edb itself is no longer used by enlightenment. may be
474removed at some point, so unless you have a burning need for this,
475don't use edb files to store image data and rely on this loader
476
477
478--enable-image-loader-eet[=static]
479
480loads image data from eet files. eet files are the backing for edje
481storage, so this is needed for edje to work. it is very useful as it
482can load an image from anywhere in the eet archive by key value so eet
483files are like "zip" files where you can pack a whole lot of image and
484other data together and just pick out the pieces you need at runtime.
485requires the eet library.
486
487
488--enable-image-loader-gif[=static]
489
490gif image loader. gif is an obsolete format, but due to its longevity,
491sitll has lots of existing data around.
492
493NOTE: evas has no notion of time, thus animated gif file are not
494supported!
495
496
497--enable-image-loader-pmaps[=static]
498
499ppm/pnm/pgm image loader that can load the "pnm" style image format.
500not very common, but the files are simple raw RGB, greyscale image or
501bitmap data in binary or ascii format
502
503
504--enable-image-loader-svg[=static]
505
506this loader can load svg files via librsvg (thus it is a dependency).
507this loader supports load options to set the dpi to decode the svg at
508etc. which can then be used to create scalable images that scale to
509any size without becoming blocky or blurry, if the source is an svg
510file.
511
512
513--enable-image-loader-tiff[=static]
514
515this loader uses libtiff to load tiff image files
516
517
518--enable-image-loader-xpm[=static]
519
520this is an xpm format image loader. xpm format images are ascii files
521that look like c/c++ source code that contain images. these files are
522old-fashioned unix+x11 images you may encounter, but are inefficient
523for storage and decoding and have been superseded by png files in
524almost every way
525
526
527--enable-image-loader-bmp[=static]
528
529this enables the bmp image format loader. note that there seems to be
530a disagreement on 32bit bmp format images where alpha channels are
531concerned and you may run into issues with bmps generated by the gimp
532that have alpha channels. there is a problem where they don't seem to
533be spec-conformant.
534
535
536--enable-image-loader-tga[=static]
537
538this loader load tga format files. these files are very old-fashioned
539but found often in the 3d graphics world.
540
541
542------------------------------------------------------------------------------
543FONT LOADERS:
544--enable-font-loader-eet[=static]
545
546this loader can load font (ttf) files directly from eet archives like
547the eet image loader. requires the eet library
548
549
550------------------------------------------------------------------------------
551CONVERTERS:
552--enable-convert-yuv
553
554this enables an optimized yuv (yv12 601 colorspace) to ARGB32
555converter in evas
556
557
558--enable-convert-16-rgb-565
559
560the most common converter you'll want for 16bpp. this means 5 bits for red,
5616 bits for green and 5 bits for blue are used.
562
563
564--enable-convert-16-rgb-555
565
566this is a converter for what many people know as "15 bit" color. you might
567want to enable this for X output as it used to be common to find many cards
568that do this.
569
570
571--enable-convert-16-rgb-444
572
573this converter outputs to 12bit packed (int 16 bit WORDS).
574
575
576--enable-convert-16-rgb-ipq
577
578this converter was written specifically for the ipaq (and may apply to
579similarly configured devices) because it lies about its screen depth. it
580says it is 16bit 565 (that means 5 upper bits of the WORD are red, the next 6
581bits are for green abd the next 5 for blue) but in fact only the upper 4
582bits of each color component (red green and blue) are significant and work,
583so effectively the display is 12 bits of color, not 16, but padded out to
584fill 16bits, with unused bits in the color masks. X on the ipaq advertises
585it as a full 16bpp 565 display (i can't remember what the linux framebuffer
586advertised it as) and so many lumps of code can be fooled into rendering
587data badly because they think the output will look as the expect. This
588renderer assumes the upper 4 bits fo each color primitive only are
589significant and renders accordingly. this produces nice quality images on
590the ipaq and even still works in 16bpp 565 on your pc. it is highly
591recommended to use this renderer if your target is an ipaq or your device
592displays similar qualities of the ipaq for display purposes.
593
594
595--enable-convert-16-rgb-rot-0
596
597this enables the 16bpp converters to run with 0 degrees rotation - this is
598normal display and you should really include this (though it is optional if you
599only ever want to do portrait mode - perhaps like on an ipaq embedded device)
600
601
602--enable-convert-16-rgb-rot-270
603
604this enables the portrait mode (270 degree rotation) converters for 16bpp.
605this is the standard display mode for things like pocketpc on the ipaq and
606the zaurus etc. this is an optimized part of the rendering pipeline to allow
607portrait display with a much lower overhead than doing it through X.
608
609
610--enable-convert-16-rgb-rot-180
611
612same as --enable-convert-16-rgb-rot-270 but for 180 degrees
613
614
615--enable-convert-16-rgb-rot-90
616
617same as --enable-convert-16-rgb-rot-270 but for 90 degrees
618
619
620--enable-convert-24-rgb-888
621
622this converts evas's 32bit ARGB to 24bit RGB packed format for output
623if needed
624
625
626--enable-convert-24-bgr-888
627
628this converts evas's 32bit ARGB to 24bit packed BGR format for output
629if needed
630
631
632--enable-convert-32-rgb-8888
633
63432bit RGB output conversion support. byteswapping compared to evas's
635native colorspace
636
637
638--enable-convert-32-bgr-8888
639
640conversion (reduces toa memory copy) from evas's native colorspace to
641the same color format.
642
643
644--enable-convert-32-rgb-rot-0
645
646copies without rotation evas's native image format
647
648
649--enable-convert-32-rgb-rot-270
650
651copies evas's native ARGB32 pixels but at a rotation of 270 degrees.
652
653
654--enable-convert-32-rgb-rot-180
655
656same as --enable-convert-32-rgb-rot-270 but for 180 degrees
657
658
659--enable-convert-32-rgb-rot-90
660
661same as --enable-convert-32-rgb-rot-270 but for 90 degrees
662
663
664--enable-convert-24-rgb-ezx
665
666a special colorspace handler for 18bit color packed into 24bit output
667(where only 6 bits per r, g and b byte are used). the only known
668platform that did this was the motorola esx based phones that used
669qtopia originally and have open ezx ports for them.
670
671
672--enable-convert-8-gry-1
673
674enable 8bit gray to 1 bit black & white converter
675
676
677--enable-convert-8-gry-16
678
6798bit grey to 16 level grayscale converter
680
681
682--enable-convert-8-grayscale-64
683
6848bit grey to 64 level grayscale converter
685
686
687--enable-convert-8-rgb-332
688
689enable converter from 32bit ARGB to 8bit color "332" colorspace (3bits
690red, 3 bits green, 2 bits blue)
691
692
693--enable-convert-8-rgb-666
694
695enable converter from 32bit ARGB to 8bit color "216" "websafe"
696colorspace (6 values for red, 6 for green and 6 for blue - 6x6x6 being
697216 colors).
698
699
700--enable-convert-8-rgb-232
701
702same as convert-8-rgb-332 but 2 bits red, 3 green, 2 blue
703
704
705--enable-convert-8-rgb-222
706
707same as convert-8-rgb-332 but 2 bits red, 2 green, 2 blue
708
709
710--enable-convert-8-rgb-221
711
712same as convert-8-rgb-332 but 2 bits red, 2 green, 1 blue
713
714
715--enable-convert-8-rgb-121
716
717same as convert-8-rgb-332 but 1 bit red, 2 green, 1 blue
718
719
720--enable-convert-8-rgb-111
721
722same as convert-8-rgb-332 but 1 bit red, 1 green, 1 blue. this is the
723lowest sized colorspace supported for rgb (3bits, 8 color).
724
725
726------------------------------------------------------------------------------
727MISC:
728--enable-pthreads
729
730this enables pthread support in evas so multiple threads may run
731internally for parallel rendering, loading etc.
732
733
734--enable-async-events
735
736this provides the ability for evas to have an asynchronous event
737notification pipe to provide events when background threads are done
738with tasks, like pre-loading image files
739
740
741--enable-async-preload
742
743evas can load images (preload) them in the background using a thread
744if you ask it to, and provide events when done. this goes hand-in-hand
745with --enable-pthreads and --enable-async-events. you really want all
746of these available.
747
748
749--enable-async-render **CAUTION - MAY NOT WORK RIGHT**
750
751this enables a software multi-frame threaded renderer. this will
752allocate (for example) 2 frames to 2 cores, with one core of the cpu
753rendering the previous frame while the next frame starts rendering on
754another core in the meantime allowing for higher framerates with
755software rendering, using more cpu resources that are available on
756modern multi-core cpu's.
757
758This is buggy! it will likely cause crashes and rendering corruption.
759Do not enable it unless you plan to actually work on it. This requires you
760also set the environment variable EVAS_RENDER_MODE to "non-blocking" to
761enable it at runtime, as the compile-time enable simply sets up the feature
762to be ready to work. The runtime switch actually turns it on. If you don't
763plan to use this feature, don't enable it in the build as there is a general
764performance hit of maintaining this feature at all, so beware that
765enabling it for single core systems will likely take a performance hit.
766
767
768--enable-pipe-render **DISABLED DUE TO BUGS**
769
770this enables a multiple-thread renderer that divides the rendering
771into N regions (1 per core) to speed up rendering in software when you
772have multiple cpu cores.
773
774
775--enable-word-cache **DISABLED DUE TO BUGS**
776
777Cache rendered words and draw them as a single object, instead of
778individual characters. This is a big gain for things like neon which
779draw large runs effectively.
780
781However it is useless on GL and similar back-ends as the cost in
782sending a word sized texture kills the performance gain (and GL is
783pretty good at drawing lots of small things anyway). If it detects a GL
784backend is in use, it disables itself.
785
786By default words (strings) of more then 50 characters are not cached.
787The system caches 40 words by default, but this can be changed by
788setting EVAS_WORD_CACHE_MAX_WORDS to another number. Setting it to 0
789will disable word-cache at run time.
790
791Text based benchmarks are 50-100% quicker.
792
793If you have any issues with word caching, please report them to either
794the e-devel mailing list or Brett Nash <nash@nash.id.uau>
795
796For GL see metric caching...
797
798
799--enable-metric-cache **DISABLED DUE TO BUGS**
800
801Metric caching saves character metrics between characters in words.
802This enables it to render words much quicker as it avoids things like
803space calculations and kerning calculation.
804
805The cache size is also controlled by EVAS_WORD_CACHE_MAX_WORDS.
806
807It is useful for GL in particular, although software engines do get
808some gain.
809
810Generally it is recommended you enable one or both of word or metric caching,
811depending on your engine use. If you are only using software, enable word
812caching (and neon on arm if you can), for GL, turn on metric caching.
813A simple solution is enable both, and let the engine sort it out at run time.
814
815If you have any issues with metric caching, please report them to either
816the e-devel mailing list or Brett Nash <nash@nash.id.uau>
817
818
819--enable-fontconfig
820
821this enables fontconfig support for loading font files by using
822generic fontconfig font names and styles. you really should use this
823by default on any linux/unix platform for universal font support.
824
825
826--enable-fribidi
827
828this enables support for the fribidi library to have right to left and
829left to right font rendering so languges such as arabic, hebrew and
830other "RTL" langauges display properly.
831
832
833--enable-harfbuzz
834
835this enables support for the harfbuzz shaping library for complex
836shaping support in arabic, hindi and other similar languages.
837
838--enable-liblinebreak
839
840this enables support of complex line breaking rules using liblinebreak.
841
842--enable-evas-magic-debug
843
844this allows you to enable and disable evas's extra magic number
845checks. these allow better stability with runtime object magic
846"number" checks to make sure you are accessing a real object in memory
847of the right type, and will avoid doing "bad things" if they detect
848the wrong object type being passed in. if you are absolutely sure your
849system has no bugs in accessing objects of the wrong type with the
850wrong calls, you can gain some small performance by disabling this.
851
852
853------------------------------------------------------------------------------
854NOTES:
855
856For the arm optimizations you want to try:
857 export CFLAGS="-O2 -march=armv5te -mcpu=arm1136jf-s -fomit-frame-pointer"
858
859To enable the async renderer compile with:
860 --enable-async-render
861and also runtime set this environment variable:
862 export EVAS_RENDER_MODE=non-blocking
863
864For compilation with MinGW, fnmatch.h is probably missing. That file can be
865found here:
866 http://www.koders.com/c/fid2B518462CB1EED3D4E31E271DB83CD1582F6EEBE.aspx
867It should be installed in the mingw include directory.
868