This commit provides the following fixes:
* pure LTDC mode: fix the 'copy_back' function when swapping the double
buffered layers.
* fix the 'swapped' mode, when buffer's internal representation has swapped
x/y values.
This commit enhances the efficiency of the graphical primitives, by
* better organizing the potentially hardware-optimized primitives
* constantly redirecting the other ones to those hardware-optimized when
appropriate
* optimize the software-rendered copy_rect
* use direct fields access for values that are used very often (width, height,
color_mode)
* provide a mean to easily know if a bitmap is a memory buffer or a device
* adds finer control over the potentially DMA-accelerated Fill_Rect primitive.
* add direct access to DMA2D buffers, to prevent too much dispatching
In order to copy big chunks of data from buffer to buffer, it is usually
desirable to use DMA and thus we need to ensure that the memory and the cache
are coherent before transfering the data.
This is however a costly operation, that in controlled circumstances is not
needed.
Hence the addition of the Clean_Cache parameter to the Copy_Rect* subprograms.
This also adds a missing variant for Set_Pixel_Blend with color as native
representation, and improves the implementation of
Soft_Drawing_Bitmap.Copy_Rect to ease the implementation of
hardware-accelerated drawing primitives. STM32.DMA2D_Bitmap is simplified
accordingly.
This merges the various sdcard handling enhancements into a single commit,
the two branches master and sdcard having diverged too much to perform
a simple git merge.
The name services seems to be confusing so I propose to rename it to
middleware. Although the middleware word is quite overloaded in software
development, I think the signification is clear enough for this project.
Also it's the word use by ST for in STM32Cube to hold USB stack, network
stack, filesystems, audio tools, which coresponds with the definition of
what was is currently called services.