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