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