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