150 views
in GUI Development by

Hi sir,

For the memory pool setting, what is the minimum size required?  Is 600K Bytes size enough for memroy pool usage?

For "surface cache" and "glyph cache", Is the memory they use included in the memroy pool? If "Yes",  the sum of "surface cache" +"glyph cache" shouldn't exceed the size of memory pool, is it right?

In EW studio, if I made the setting as "DirectAccess" for both "FormatOfBitmapResources" and "FormatOfStringContents".  Are "surface cache" and "glyph cache" meaningless ?


Thanks.

Jerry

1 Answer

0 votes
by

Hi Jerry,

the size of the memory pool depends mainly on your GUI application - so I cannot answer the question if 600kBytes are enough with yes or no. If you are using DirectAccess for the bitmap resources, then it is very likely that 600kBytes are sufficient, as long as you do not use many buffered components.

First of all, you need memory for the framebuffers (which are not part of the memory pool). For more details please see chapter Framebuffer Concepts. The size is typically width * height * bytes per pixel for one framebuffer.

The memory pool is used for all Chora objects (= all your GUI components and data objects), for the strings, for the font glyphs, for bitmaps and for internal processing (e.g. issue buffer). With version 9.30, Embedded Wizard contains a Memory (RAM) usage window, which gives you an overview of your GUI application and the current memory footprint.

Concerning the glyph cache:

The glyph cache is a preallocated piece of memory that is used to store all uncompressed glyphs within the memory - this means, all glyphs that are requested during runtime in order to draw a text are decompressed and stored within the glyph cache. As long as there is enough space within the glyph cache, all frequently used glyphs are kept within the cache to avoid decompression again and again.

The glyph cache is allocated by the memory manager within the memory pool. The size of the glyph cache can be configured by setting the defines EW_MAX_GLYPH_SURFACE_WIDTH and EW_MAX_GLYPH_SURFACE_HEIGHT.

Concerning the surface cache:

EW_MAX_SURFACE_CACHE_SIZE is just a threshold value, it is not a preallocated memory - the define EW_MAX_SURFACE_CACHE_SIZE is used to control the number of bytes that can be occupied by bitmap resources that are no more used by the UI application. As long as there is enough memory available, the bitmap resources are still available within the memory in order to avoid further loading and decompression in case they are used again. Just a kind of runtime optimization.

With version 9.30, the meaning of the macro EW_MAX_SURFACE_CACHE_SIZE has changed due to lazy loading and discarding of bitmap resources. Now, EW_MAX_SURFACE_CACHE_SIZE defines the threshhold, when bitmaps are discarded from memory.

Best regards,

Manfred.

by
Dear Manfred,

Thank you very much for your detailed reply, which clarifies all my questions.

 

Jerry

Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint

...