From 712262e108c262088d32a979462cfa4542ba2f81 Mon Sep 17 00:00:00 2001 From: Guillaume Balan Date: Mon, 6 Oct 2025 07:41:45 +0200 Subject: [PATCH 1/4] add the ui pack 14.5.0 --- VEEPortingGuide/uiChangeLog.rst | 65 +++++++++++++++++++++ VEEPortingGuide/uiMigrationGuide.rst | 84 ++++++++++++++++++++++++++++ VEEPortingGuide/uiReleaseNotes.rst | 22 +++++--- VEEPortingGuide/uiReplaces.rst | 10 +++- VEEPortingGuide/vgReleaseNotes.rst | 22 ++++++-- 5 files changed, 188 insertions(+), 15 deletions(-) diff --git a/VEEPortingGuide/uiChangeLog.rst b/VEEPortingGuide/uiChangeLog.rst index 6f806d444..da2ef13dc 100644 --- a/VEEPortingGuide/uiChangeLog.rst +++ b/VEEPortingGuide/uiChangeLog.rst @@ -6,6 +6,71 @@ Changelog ========= +.. _section_ui_changelog_14_5_0: + +[14.5.0] - 2025-10-07 +===================== + +MicroUI +""""""" + +**Fixed** + +- Fix ``Image.get()`` and ``Image.canGet()`` of external RAW images: the images must respect the memory constraints (byte addressable, alignment). +- Fix the loading of external RAW images that does not respect the GPU memory constraints. +- Fix the reading in the back buffer: it could read in the wrong buffer after a fast GPU draw after a flush. + +LLAPIs +"""""" + +**Added** + +- Add the API ``LLUI_DISPLAY_IMPL_[un]lockJob()`` to enable the use of re-entrant functions in a task other than the MicroJvm virtual machine task. +- Add the API ``LLUI_DISPLAY_decodeImage()`` to decode an image from the native world. +- Add the API ``LLUI_DISPLAY_isMutable()`` that tells if an image is mutable or not. +- Add the API ``LLUI_DISPLAY_getAddress()`` that gives the absolute address of an image. +- Add the API ``LLUI_DISPLAY_getSize()`` that gives the image size in bytes. + +C Module MicroUI +"""""""""""""""" + +**Changed** + +- Use the include directive ``#include "veeport_configuration.h"`` to configure the UI configuration (``ui_configuration.h``). + +**Fixed** + +- Fix the log identifiers of the library Drawing. + +C Module DMA2D +"""""""""""""" + +**Changed** + +- Use the include directive ``#include "veeport_configuration.h"`` to configure the DMA2D configuration (``ui_dma2d_configuration.h``). + +C Module VGLite +"""""""""""""""" + +**Changed** + +- Use the include directive ``#include "veeport_configuration.h"`` to configure the VGLite configuration (``ui_vglite_configuration.h``). + +**Fixed** + +- Fix the use of the VGLite option ``VG_BLIT_WORKAROUND``: it must be ``0`` or undefined to avoid UI testsuite issues. + +C Module NemaGFX +"""""""""""""""" + +**Changed** + +- Use the include directive ``#include "veeport_configuration.h"`` to configure the NemaGFX configuration (``ui_nema_configuration.h``).. + +**Fixed** + +- Fix the useless include directive. + .. _section_ui_changelog_14_4_2: [14.4.2] - 2025-05-20 diff --git a/VEEPortingGuide/uiMigrationGuide.rst b/VEEPortingGuide/uiMigrationGuide.rst index d5330f16f..a117e83fa 100644 --- a/VEEPortingGuide/uiMigrationGuide.rst +++ b/VEEPortingGuide/uiMigrationGuide.rst @@ -6,6 +6,79 @@ Migration Guide =============== +.. _section_ui_migrationguide_pack_14.5.0: + +From 14.4.2 to 14.5.0 +===================== + +.. _section_ui_migrationguide_pack_14.5.0_bsp: + +BSP +""" + +The C Module's options configuration file ``ui_configuration.h`` must not be modified anymore. +Before installing the new C Module: + +* Create (if not already exists) the global `VEE Port configuration file`_. +* Move your own configuration from ``ui_configuration.h`` to ``veeport_configuration.h``. +* Install the `C Module MicroUI 14.5.0`_. + +The following options (see ``ui_configuration.h``) have now a value (not just commented/uncommented); check (and adjust) whether they are used outside the UI C Modules: + +* ``UI_FEATURE_ALLOCATOR`` +* ``UI_FEATURE_EVENT_DECODER`` +* ``UI_FEATURE_IMAGE_CUSTOM_FORMATS`` +* ``UI_FEATURE_FONT_CUSTOM_FORMATS`` +* ``UI_FEATURE_BRS_FLUSH_SINGLE_RECTANGLE`` + +.. _VEE Port configuration file: https://github.com/MicroEJ/Tool-Project-Template-VEEPort/tree/master/bsp/vee/port/config + +BSP with DMA2D +"""""""""""""" + +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.5.0_bsp`. + +The C Module's options configuration file ``ui_dma2d_configuration.h`` must not be modified anymore. +Before installing the new C Module: + +* Move your own configuration from ``ui_dma2d_configuration.h`` to ``veeport_configuration.h``. +* Install the `C Module MicroUI over DMA2D to version 8.0.0`_. + +BSP with VGLite +""""""""""""""" + +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.5.0_bsp`. + +The C Module's options configuration file ``ui_vglite_configuration.h`` must not be modified anymore. +Before installing the new C Module: + +* Move your own configuration from ``ui_vglite_configuration.h`` to ``veeport_configuration.h``. +* Install the `C Module MicroUI over VGLite to version 11.0.0`_. + +The following options (see ``ui_vglite_configuration.h``) have now a value (not just commented/uncommented); check (and adjust) whether they are used outside the UI C Modules: + +* ``VGLITE_USE_GPU_FOR_SIMPLE_DRAWINGS`` +* ``VGLITE_USE_GPU_FOR_RGB565_IMAGES`` +* ``VGLITE_USE_GPU_FOR_TRANSPARENT_IMAGES`` +* ``VGLITE_OPTION_TOGGLE_GPU`` + +BSP with NemaGFX +"""""""""""""""" + +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.5.0_bsp`. + +The C Module's options configuration file ``ui_nema_configuration.h`` must not be modified anymore. +Before installing the new C Module: + +* Move your own configuration from ``ui_nema_configuration.h`` to ``veeport_configuration.h``. +* Install the `C Module MicroUI over NemaGFX to version 5.0.0`_. + +The following options (see ``ui_nema_configuration.h``) have now a value (not just commented/uncommented); check (and adjust) whether they are used outside the UI C Modules: + +* ``ENABLE_SIMPLE_LINES`` +* ``ENABLE_FADED_LINES`` +* ``ENABLE_IMAGE_ROTATION`` + .. _section_ui_migrationguide_pack_14.4.2: From 14.3.3 to 14.4.2 @@ -19,19 +92,30 @@ Front Panel .. _Front Panel Widgets 5.3.1: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/ej/tool/frontpanel/widget/5.3.1/ + +.. _section_ui_migrationguide_pack_14.4.2_bsp: + +BSP +""" + +* Install the `C Module MicroUI 14.4.2`_. + BSP with DMA2D """""""""""""" +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.4.2_bsp`. * Install the `C Module MicroUI over DMA2D to version 7.0.1`_. BSP with VGLite """"""""""""""" +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.4.2_bsp`. * Install the `C Module MicroUI over VGLite to version 10.0.1`_. BSP with NemaGFX """""""""""""""" +* **Prerequisite:** follow the migration steps of :ref:`section_ui_migrationguide_pack_14.4.2_bsp`. * Install the `C Module MicroUI over NemaGFX to version 4.0.1`_. Application diff --git a/VEEPortingGuide/uiReleaseNotes.rst b/VEEPortingGuide/uiReleaseNotes.rst index 69b466611..1287b28a9 100644 --- a/VEEPortingGuide/uiReleaseNotes.rst +++ b/VEEPortingGuide/uiReleaseNotes.rst @@ -18,7 +18,7 @@ Standard Versions +-----------------+--------------------+---------------------------------------------------------+ | UI Pack Range | Architecture Range | Comment | +=================+====================+=========================================================+ -| [13.5.0-14.4.2] | [7.16.0-9.0.0[ | Compatibility with Architecture 8 | +| [13.5.0-14.5.0] | [7.16.0-9.0.0[ | Compatibility with Architecture 8 | +-----------------+--------------------+---------------------------------------------------------+ | [13.0.0-13.4.1] | [7.16.0-8.0.0[ | SNI 1.3 | +-----------------+--------------------+---------------------------------------------------------+ @@ -60,7 +60,7 @@ The following table describes Foundation Libraries API versions implemented in M * - UI Pack Range - MicroUI - Drawing - * - [14.1.1-14.4.2] + * - [14.1.1-14.5.0] - `3.6.0 `_ - `1.0.4 `_ * - [14.0.0-14.0.3] @@ -129,7 +129,7 @@ Display +-----------------+------------------------------------------------------------------+ | UI Pack Range | Changes | +=================+==================================================================+ -| [14.0.0-14.4.2] | Signature of ``LLUI_DISPLAY_IMPL_flush()`` changed. | +| [14.0.0-14.5.0] | Signature of ``LLUI_DISPLAY_IMPL_flush()`` changed. | +-----------------+------------------------------------------------------------------+ | [13.0.0-13.7.2] | *UI3* format: implement ``LLUI_DISPLAY_impl.h``: | | | | @@ -162,7 +162,7 @@ Input +-----------------+------------------------------------------------------------------+ | UI Pack Range | Changes | +=================+==================================================================+ -| [13.0.0-14.4.2] | *UI3* format: implement ``LLUI_INPUT_impl.h``: | +| [13.0.0-14.5.0] | *UI3* format: implement ``LLUI_INPUT_impl.h``: | | | | | | * ``void LLUI_INPUT_IMPL_initialize([...]);`` | | | * ``jint LLUI_INPUT_IMPL_getInitialStateValue([...]);`` | @@ -183,7 +183,7 @@ LED +-----------------+------------------------------------------------------------------+ | UI Pack Range | Changes | +=================+==================================================================+ -| [13.0.0-14.4.2] | *UI3* format: implement ``LLUI_LED_impl.h``: | +| [13.0.0-14.5.0] | *UI3* format: implement ``LLUI_LED_impl.h``: | | | | | | * ``jint LLUI_LED_IMPL_initialize([...]);`` | | | * ``jint LLUI_LED_IMPL_getIntensity([...]);`` | @@ -226,7 +226,7 @@ When the Front Panel project does not require/use the latest Front Panel UI API, +---------------------+-----------------------------+--------------+ | Widget Module Range | UI Pack Compatibility Range | Repository | +=====================+=============================+==============+ -| 5.3.1 | [14.4.1-14.4.2] | `Developer`_ | +| [5.3.1-5.3.2] | [14.4.1-14.5.0] | `Developer`_ | +---------------------+-----------------------------+--------------+ | [5.1.0-5.2.0] | [14.3.1-14.3.3] | `Developer`_ | +---------------------+-----------------------------+--------------+ @@ -325,6 +325,8 @@ The following table describes the version compatibility between the MicroEJ UI P +-----------------+---------------+--------------------------+------------------------------------------+ | UI Pack | Chrom-ART | MicroUI C Module | Comment | +=================+===============+==========================+==========================================+ +| 14.5.0 | 8.0.0 | Identical to the UI Pack | New options convention | ++-----------------+---------------+--------------------------+------------------------------------------+ | [14.1.1-14.4.2] | [7.0.0-7.0.1] | Identical to the UI Pack | Font extensibility | +-----------------+---------------+--------------------------+------------------------------------------+ | [14.0.1-14.0.3] | [5.0.1-6.0.0] | [4.0.1-4.1.0] | C modules harmonization | @@ -354,6 +356,8 @@ The following table describes the version compatibility between the MicroEJ UI P +-----------------+-----------------+--------------------------+------------------------------------------+ | UI Pack | VGLite | MicroUI C Module | Comment | +=================+=================+==========================+==========================================+ +| 14.5.0 | 11.0.0 | Identical to the UI Pack | New options convention | ++-----------------+-----------------+--------------------------+------------------------------------------+ | [14.1.1-14.4.2] | [10.0.0-10.0.1] | Identical to the UI Pack | Font extensibility | +-----------------+-----------------+--------------------------+------------------------------------------+ | [14.0.1-14.0.3] | 9.0.0 | 4.1.0 | VG Pack extensibility | @@ -374,7 +378,7 @@ The following table describes the version compatibility between the C module and +----------------+-----------------------------+ | C Module Range | VGLite Libraries Range | +================+=============================+ -| [8.0.0-10.0.0] | 3.0.15_rev7 | +| [8.0.0-11.0.0] | 3.0.15_rev7 | +----------------+-----------------------------+ | [7.1.0-7.2.0] | 3.0.15_rev4 and 3.0.15_rev7 | +----------------+-----------------------------+ @@ -394,6 +398,8 @@ The following table describes the version compatibility between the MicroEJ UI P +-----------------+---------------+--------------------------+------------------------------+ | UI Pack | NemaGFX | MicroUI C Module | Comment | +=================+===============+==========================+==============================+ +| 14.5.0 | 5.0.0 | Identical to the UI Pack | New options convention | ++-----------------+---------------+--------------------------+------------------------------+ | [14.1.1-14.4.2] | [4.0.0-4.0.1] | Identical to the UI Pack | Font extensibility | +-----------------+---------------+--------------------------+------------------------------+ | [14.0.1-14.0.3] | 3.0.0 | 4.1.0 | VG Pack extensibility | @@ -414,7 +420,7 @@ The following table describes the version compatibility between the C module and +----------------+-------------------------+ | C Module Range | NemaGFX Libraries Range | +================+=========================+ -| [4.0.0-4.0.1] | [1.4.8-1.4.11] | +| [4.0.0-5.0.0] | [1.4.8-1.4.11] | +----------------+-------------------------+ | [1.0.0-3.0.0] | 1.4.8 | +----------------+-------------------------+ diff --git a/VEEPortingGuide/uiReplaces.rst b/VEEPortingGuide/uiReplaces.rst index 97a49a667..21eacb47a 100644 --- a/VEEPortingGuide/uiReplaces.rst +++ b/VEEPortingGuide/uiReplaces.rst @@ -1,8 +1,8 @@ -.. |UIPACKVERSION| replace:: 14.4.2 +.. |UIPACKVERSION| replace:: 14.5.0 .. |FPFRAMEWORKVERSION| replace:: 1.3.0 -.. |FPWIDGETSVERSION| replace:: 5.3.1 -.. |MICROUIVERSION| replace:: 3.6.0 +.. |FPWIDGETSVERSION| replace:: 5.3.2 +.. |MICROUIVERSION| replace:: 3.6.1 .. |VGPACKVERSION| replace:: 1.7.2 .. |MICROVGVERSION| replace:: 1.5.0 @@ -13,6 +13,7 @@ .. _MicroVG API 1.5: https://repository.microej.com/modules/ej/api/microvg/1.5.0/ .. _MicroVG API 1.4: https://repository.microej.com/modules/ej/api/microvg/1.4.0/ +.. _C Module MicroUI 14.5.0: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/14.5.0/ .. _C Module MicroUI 14.4.2: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/14.4.2/ .. _C Module MicroUI 14.4.1: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/14.4.1/ .. _C Module MicroUI 14.3.3: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/14.3.3/ @@ -30,6 +31,7 @@ .. _C Module MicroUI 1.1.0: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/1.1.0/ .. _C Module MicroUI 1.0.3: https://repository.microej.com/modules/com/microej/clibrary/llimpl/microui/1.0.3/ +.. _C Module MicroUI over DMA2D to version 8.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-dma2d/8.0.0/ .. _C Module MicroUI over DMA2D to version 7.0.1: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-dma2d/7.0.1/ .. _C Module MicroUI over DMA2D to version 7.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-dma2d/7.0.0/ .. _C Module MicroUI over DMA2D to version 6.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-dma2d/6.0.0/ @@ -45,6 +47,7 @@ .. _C Module DMA2D 1.0.8: https://repository.microej.com/modules/com/microej/clibrary/llimpl/display-dma2d/1.0.8/ .. _C Module DMA2D 1.0.6: https://repository.microej.com/modules/com/microej/clibrary/llimpl/display-dma2d/1.0.6/ +.. _C Module MicroUI over VGLite to version 11.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/11.0.0/ .. _C Module MicroUI over VGLite to version 10.0.1: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/10.0.1/ .. _C Module MicroUI over VGLite to version 10.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/10.0.0/ .. _C Module MicroUI over VGLite to version 9.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/9.0.0/ @@ -59,6 +62,7 @@ .. _C Module VGLite 4.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/4.0.0/ .. _C Module VGLite 3.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-vglite/3.0.0/ +.. _C Module MicroUI over NemaGFX to version 5.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-nemagfx/5.0.0/ .. _C Module MicroUI over NemaGFX to version 4.0.1: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-nemagfx/4.0.1/ .. _C Module MicroUI over NemaGFX to version 4.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-nemagfx/4.0.0/ .. _C Module MicroUI over NemaGFX to version 3.0.0: https://forge.microej.com/ui/repos/tree/General/microej-developer-repository-release/com/microej/clibrary/llimpl/microui-nemagfx/3.0.0/ diff --git a/VEEPortingGuide/vgReleaseNotes.rst b/VEEPortingGuide/vgReleaseNotes.rst index 691c0ef61..08633966f 100644 --- a/VEEPortingGuide/vgReleaseNotes.rst +++ b/VEEPortingGuide/vgReleaseNotes.rst @@ -15,7 +15,7 @@ The following table describes the compatibility ranges between VG and UI Packs. +---------------+-----------------+----------------------------------+ | VG Pack Range | UI Pack Range | Comment | +===============+=================+==================================+ -| [1.7.0-1.7.2] | [14.1.1-14.4.2] | MicroUI Font extensibility | +| [1.7.0-1.7.2] | [14.1.1-14.5.0] | MicroUI Font extensibility | +---------------+-----------------+----------------------------------+ | [1.5.0-1.6.0] | [14.0.0-15.0.0[ | UI Pack major version | +---------------+-----------------+----------------------------------+ @@ -85,10 +85,16 @@ The following table describes the version compatibility between the MicroEJ VG P +---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ | VG Pack | UI Pack | VG-VGLite | UI-VGLite | MicroVG C Module | MicroUI C Module | FreeType | HarfBuzz | Comment | +===============+=================+===============+===========+==================+==================+===============+===============+============================+ +| 1.7.2 | 14.5.0 | 9.0.2 | 11.0.0 | 7.0.2 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | ++---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ | 1.7.2 | [14.1.1-14.4.2] | 9.0.2 | 10.0.0 | 7.0.2 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | Misc issues | +---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ +| 1.7.1 | 14.5.0 | 9.0.1 | 11.0.0 | 7.0.1 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | ++---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ | 1.7.1 | [14.1.1-14.4.2] | 9.0.1 | 10.0.0 | 7.0.1 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | BVI issues | +---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ +| [1.5.0-1.7.0] | 14.5.0 | 9.0.0 | 11.0.0 | 7.0.0 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | ++---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ | [1.5.0-1.7.0] | [14.1.1-14.4.2] | 9.0.0 | 10.0.0 | 7.0.0 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | MicroUI Font extensibility | +---------------+-----------------+---------------+-----------+------------------+------------------+---------------+---------------+----------------------------+ | 1.6.0 | [14.0.1-14.0.3] | 8.0.1 | 9.0.0 | 6.0.1 | 4.1.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | VG Pack extensibility | @@ -123,11 +129,19 @@ The following table describes the version compatibility between the MicroEJ VG P +---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ | VG Pack | UI Pack | VG-NemaVG | UI-Nema | MicroVG C Module | MicroUI C Module | FreeType | HarfBuzz | Comment | +===============+=================+===========+=========+==================+==================+===============+===============+============================+ -| 1.7.1 | [14.1.1-14.4.2] | 2.0.1 | 4.0.0 | 7.0.1 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.0] | BVI issues | +| 1.7.2 | 14.5.0 | 2.0.2 | 5.0.0 | 7.0.2 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | ++---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ +| 1.7.2 | [14.1.1-14.4.2] | 2.0.2 | 4.0.0 | 7.0.2 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | Misc issues | ++---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ +| 1.7.1 | 14.5.0 | 2.0.1 | 5.0.0 | 7.0.1 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | ++---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ +| 1.7.1 | [14.1.1-14.4.2] | 2.0.1 | 4.0.0 | 7.0.1 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | BVI issues | ++---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ +| [1.6.0-1.7.0] | 14.5.0 | 2.0.0 | 5.0.0 | 7.0.0 | 14.5.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | New options convention | +---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ -| [1.6.0-1.7.0] | [14.1.1-14.4.2] | 2.0.0 | 4.0.0 | 7.0.0 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.0] | MicroUI Font extensibility | +| [1.6.0-1.7.0] | [14.1.1-14.4.2] | 2.0.0 | 4.0.0 | 7.0.0 | [14.1.1-14.4.2] | [3.0.0-4.0.0] | [2.0.0-3.0.1] | MicroUI Font extensibility | +---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ -| 1.6.0 | [14.0.1-14.0.3] | 1.0.1 | 3.0.0 | 6.0.1 | 4.1.0 | [3.0.0-4.0.0] | [2.0.0-3.0.0] | | +| 1.6.0 | [14.0.1-14.0.3] | 1.0.1 | 3.0.0 | 6.0.1 | 4.1.0 | [3.0.0-4.0.0] | [2.0.0-3.0.1] | | +---------------+-----------------+-----------+---------+------------------+------------------+---------------+---------------+----------------------------+ The following table describes the version compatibility between the C module and the NemaVG libraries (officially supported): From 94aee518f657dada5bff26b9f3649028a0ea664f Mon Sep 17 00:00:00 2001 From: Guillaume Balan Date: Mon, 6 Oct 2025 08:32:09 +0200 Subject: [PATCH 2/4] mention new LLAPI lock() and unlock() --- VEEPortingGuide/uiDisplay.rst | 16 +++++++++++++++- VEEPortingGuide/uiImageLoader.rst | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/VEEPortingGuide/uiDisplay.rst b/VEEPortingGuide/uiDisplay.rst index c1cbc0029..fa410e251 100644 --- a/VEEPortingGuide/uiDisplay.rst +++ b/VEEPortingGuide/uiDisplay.rst @@ -1052,6 +1052,8 @@ The Abstraction Layer distinguishes between the display *virtual* size and the d .. note:: The *physical* size may not be configured; in that case, the Graphics Engine considers the *virtual* size os *physical* size. +.. _section_display_llapi_semaphore: + Semaphores ---------- @@ -1095,14 +1097,26 @@ The principle of implementing a MicroUI drawing function is described in the cha .. _Painter: https://repository.microej.com/javadoc/microej_5.x/apis/ej/microui/display/Painter.html +.. _section_display_llapi_graphics_engine: + Graphics Engine API --------------------- +------------------- The Graphics Engine provides a set of functions to interact with the C archive. The functions allow the retrieval of some drawing characteristics, the synchronization of drawings between them, the notification of the end of flush and drawings, etc. The functions are available in ``LLUI_DISPLAY.h``. +Most APIs are thread-safe, meaning that any C task can call the Graphics Engine APIs at any time. +However, certain functions need to be synchronized with MicroUI (and the Core Engine task), including ``allocateImageBuffer()``, ``freeImageBuffer()``, and ``decodeImage()``. + +.. note:: This list is not exhaustive; please refer to the C documentation for ``LLUI_DISPLAY_IMPL_lockJob()`` for the complete list. + +To facilitate this synchronization, the Graphics Engine provides optional supplementary Abstract Layer API: ``LLUI_DISPLAY_IMPL_lockJob()`` and ``LLUI_DISPLAY_IMPL_unlockJob()``. +The implementation of these APIs simply involves using a binary semaphore. + +.. important:: This binary semaphore must not be shared with the :ref:`binary semaphores` given to the Graphics Engine during its initialization. + Typical Implementations ======================= diff --git a/VEEPortingGuide/uiImageLoader.rst b/VEEPortingGuide/uiImageLoader.rst index 36c4f574b..97a71fa3a 100644 --- a/VEEPortingGuide/uiImageLoader.rst +++ b/VEEPortingGuide/uiImageLoader.rst @@ -115,6 +115,9 @@ An image may be pre-processed (:ref:`section_image_generator`) and so already in Encoded Image ============= +Internal Decoders +----------------- + An image can be encoded (PNG, JPEG, etc.). In this case Image Loader asks to its Image Decoders module if a decoder is able to decode the image. The source image is not copied in RAM (expect for images stored as :ref:`section_image_external_memory`). @@ -129,6 +132,9 @@ The UI extension provides two internal Image Decoders modules: * PNG Decoder: a full PNG decoder that implements the PNG format (``https://www.w3.org/Graphics/PNG`` ). Regular, interlaced, indexed (palette) compressions are handled. * BMP Monochrome Decoder: .bmp format files that embed only 1 bit per pixel can be decoded by this decoder. +Additional Decoders +------------------- + .. _image_external_decoder: Some additional decoders can be added. @@ -155,6 +161,16 @@ The implementation must respect the following rules: - Waiting the end of decoding step before returning. +Callers +------- + +The internal and external decoders are called by the Graphics Engine when the application invokes the MicroUI API `ej.microui.display.ResourceImage.loadImage()`_. +They can also be explicitly called by any C task via the supplementary API ``LLUI_DISPLAY_decodeImage()``. + +.. important:: If the Abstraction Layer API ``LLUI_DISPLAY_decodeImage()`` is called outside of the Core Engine task (i.e., outside of a native Java context), synchronization functions with the Graphics Engine must be implemented (see :ref:`section_display_llapi_graphics_engine`). + +.. _ej.microui.display.ResourceImage.loadImage(): https://repository.microej.com/javadoc/microej_5.x/apis/ej/microui/display/ResourceImage.html#loadImage-java.lang.String- + .. _section_decoder_installation: Installation From 7da903f8b5b47de986ea135a973a999b02436890 Mon Sep 17 00:00:00 2001 From: Guillaume Balan Date: Mon, 6 Oct 2025 09:07:06 +0200 Subject: [PATCH 3/4] describes the output raw formats --- VEEPortingGuide/uiImageLoader.rst | 76 ++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/VEEPortingGuide/uiImageLoader.rst b/VEEPortingGuide/uiImageLoader.rst index 97a71fa3a..8fc9f28b2 100644 --- a/VEEPortingGuide/uiImageLoader.rst +++ b/VEEPortingGuide/uiImageLoader.rst @@ -161,14 +161,86 @@ The implementation must respect the following rules: - Waiting the end of decoding step before returning. -Callers -------- +Abstraction Layer API +--------------------- The internal and external decoders are called by the Graphics Engine when the application invokes the MicroUI API `ej.microui.display.ResourceImage.loadImage()`_. They can also be explicitly called by any C task via the supplementary API ``LLUI_DISPLAY_decodeImage()``. .. important:: If the Abstraction Layer API ``LLUI_DISPLAY_decodeImage()`` is called outside of the Core Engine task (i.e., outside of a native Java context), synchronization functions with the Graphics Engine must be implemented (see :ref:`section_display_llapi_graphics_engine`). +Like MicroUI, this API provides an instruction on the output format (see :ref:`section_image_raw`). +This instruction may not be followed by the decoder, depending on the encoding capabilities of the decoder and the Graphics Engine. +The default format of the decoder is then selected instead (depends on the decoder itself). + +.. note:: The caller can verify the RAW encoding by checking the ``format`` field of the ``MICROUI_Image``. + +Unlike the MicroUI API, which is limited to six output formats, the abstraction layer API allows for additional or compatible formats. +Some formats may not be available at runtime (it is recommended to use the :ref:`section_image_generator` instead). +The table below indicates whether the format instruction is adhered to, replaced by a compatible format, or replaced by the default format of the decoder. + ++-----------------------------------+-----------------------------------+ +| Instruction | Output Format | ++===================================+===================================+ +| MICROUI_IMAGE_FORMAT_DISPLAY | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB8888 | MICROUI_IMAGE_FORMAT_ARGB8888 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB1555 | MICROUI_IMAGE_FORMAT_ARGB1555 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB4444 | MICROUI_IMAGE_FORMAT_ARGB4444 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB8888_PRE | MICROUI_IMAGE_FORMAT_ARGB8888_PRE | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB1555_PRE | MICROUI_IMAGE_FORMAT_ARGB1555_PRE | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_ARGB4444_PRE | MICROUI_IMAGE_FORMAT_ARGB4444_PRE | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_RGB888 | MICROUI_IMAGE_FORMAT_RGB888 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_RGB565 | MICROUI_IMAGE_FORMAT_RGB565 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_A1 | MICROUI_IMAGE_FORMAT_A8 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_A2 | MICROUI_IMAGE_FORMAT_A8 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_A4 | MICROUI_IMAGE_FORMAT_A8 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_A8 | MICROUI_IMAGE_FORMAT_A8 | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_C1 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_C2 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_C4 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_AC11 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_AC22 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_AC44 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_LARGB8888 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_UNDEFINED | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_7 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_6 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_5 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_4 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_3 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_2 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_1 | *default format* | ++-----------------------------------+-----------------------------------+ +| MICROUI_IMAGE_FORMAT_CUSTOM_0 | *default format* | ++-----------------------------------+-----------------------------------+ + .. _ej.microui.display.ResourceImage.loadImage(): https://repository.microej.com/javadoc/microej_5.x/apis/ej/microui/display/ResourceImage.html#loadImage-java.lang.String- .. _section_decoder_installation: From a6550fdcbdb4220900aae486efdec0fd10d21a42 Mon Sep 17 00:00:00 2001 From: Guillaume Balan Date: Mon, 6 Oct 2025 09:56:14 +0200 Subject: [PATCH 4/4] review display.properties --- VEEPortingGuide/uiDisplay.rst | 22 +++++++++++++++++----- VEEPortingGuide/uiImageCore.rst | 2 +- VEEPortingGuide/uiImageGenerator.rst | 12 +++++++++--- VEEPortingGuide/uiPortConfiguration.rst | 8 ++++---- VEEPortingGuide/uiPortGPU.rst | 22 ++++++++++++++++++++-- 5 files changed, 51 insertions(+), 15 deletions(-) diff --git a/VEEPortingGuide/uiDisplay.rst b/VEEPortingGuide/uiDisplay.rst index fa410e251..fe8f4a33a 100644 --- a/VEEPortingGuide/uiDisplay.rst +++ b/VEEPortingGuide/uiDisplay.rst @@ -619,11 +619,23 @@ and blue[5]): 1. Configure the VEE Port: - * Create or open the VEE Port configuration project file ``display/display.properties``: + .. tabs:: - .. code-block:: java + .. tab:: SDK 6 - bpp=16 + In SDK 6, the configuration is done in the properties file ``configuration.properties`` of the VEE Port project: + + .. code-block:: java + + com.microej.pack.display.bpp=16 + + .. tab:: SDK 5 + + In SDK 5, the configuration is done in the properties file ``display/display.properties``: + + .. code-block:: java + + bpp=16 2. Image Generator: @@ -1723,8 +1735,8 @@ This configuration step is used to choose the kind of implementation (see :ref:` .. tab:: SDK 6 In SDK 6, the configuration is done in the properties file ``configuration.properties`` of the VEE Port project. - All the properties names listed below must be prefixed by ``com.microej.runtime.display.``. - For example the ``bpp`` properties is defined by the ``com.microej.runtime.display.bpp`` property. + All the properties names listed below must be prefixed by ``com.microej.pack.display.``. + For example the ``bpp`` properties is defined by the ``com.microej.pack.display.bpp`` property. .. tab:: SDK 5 diff --git a/VEEPortingGuide/uiImageCore.rst b/VEEPortingGuide/uiImageCore.rst index 38d842f88..e97430f2c 100644 --- a/VEEPortingGuide/uiImageCore.rst +++ b/VEEPortingGuide/uiImageCore.rst @@ -796,7 +796,7 @@ How to get the file: #. Perform some changes into the copied file (see after). #. Rebuild the VEE Port: the file in the `dropins` folder is copied in the VEE Port instead of the original one. -.. warning:: When the display format in ``[VEE Port configuration project]/display/display.properties`` changes, the linker file suffix changes too. Perform again all the operations in the new file with the new suffix. +.. warning:: When the display format changes (see :ref:`section_display_installation`), the linker file suffix changes too. Perform again all the operations in the new file with the new suffix. The linker file holds five tables, one for each use case, respectively ``IMAGE_UTILS_TABLE_COPY``, ``IMAGE_UTILS_TABLE_COPY_WITH_ALPHA``, ``IMAGE_UTILS_TABLE_DRAW``, ``IMAGE_UTILS_TABLE_SET`` and ``IMAGE_UTILS_TABLE_READ``. For each table, a comment describes how to remove an option (when possible) or how to replace an option by a generic function (if available). diff --git a/VEEPortingGuide/uiImageGenerator.rst b/VEEPortingGuide/uiImageGenerator.rst index 07a617643..08875fb0f 100644 --- a/VEEPortingGuide/uiImageGenerator.rst +++ b/VEEPortingGuide/uiImageGenerator.rst @@ -196,9 +196,15 @@ Additionally, the file becomes compatible with the VEE Port constraints. If the only constraint is the pixels array alignment, the Image Generator extension is not useful: -1. Open VEE Port configuration file ``display/display.properties``. -2. Add the property ``imageBuffer.memoryAlignment``. -3. Build again the VEE Port. +.. tabs:: + + .. tab:: SDK 6 + + Add the property ``com.microej.pack.imageBuffer.memoryAlignment`` in the properties file ``configuration.properties`` of the VEE Port project. + + .. tab:: SDK 5 + + Add the property ``imageBuffer.memoryAlignment`` in the properties file ``display/display.properties`` of the VEE Port project. This alignment will be used by the Image Generator and also by the Image Loader. diff --git a/VEEPortingGuide/uiPortConfiguration.rst b/VEEPortingGuide/uiPortConfiguration.rst index 283a74284..a06e273a4 100644 --- a/VEEPortingGuide/uiPortConfiguration.rst +++ b/VEEPortingGuide/uiPortConfiguration.rst @@ -203,10 +203,10 @@ Configuration .. code-block:: java - com.microej.runtime.display.bpp=rgb565 - com.microej.runtime.display.imageBuffer.memoryAlignment=32 - com.microej.runtime.display.memoryLayout=line - com.microej.runtime.display.byteLayout=line + com.microej.pack.display.bpp=rgb565 + com.microej.pack.display.imageBuffer.memoryAlignment=32 + com.microej.pack.display.memoryLayout=line + com.microej.pack.display.byteLayout=line .. tab:: SDK 5 diff --git a/VEEPortingGuide/uiPortGPU.rst b/VEEPortingGuide/uiPortGPU.rst index 12c0d5f19..cae1c7add 100644 --- a/VEEPortingGuide/uiPortGPU.rst +++ b/VEEPortingGuide/uiPortGPU.rst @@ -103,7 +103,26 @@ These constraints affect the compile-time images (Image Generator) and the runti Address Alignment ----------------- -In the VEE Port Configuration project, specify the property ``imageBuffer.memoryAlignment`` in the ``display.properties`` file. +In the VEE Port Configuration project, specify the property ``imageBuffer.memoryAlignment``: + +.. tabs:: + + .. tab:: SDK 6 + + In SDK 6, the configuration is done in the properties file ``configuration.properties`` of the VEE Port project: + + .. code-block:: java + + com.microej.pack.imageBuffer.memoryAlignment=16 + + .. tab:: SDK 5 + + In SDK 5, the configuration is done in the properties file ``display/display.properties``: + + .. code-block:: java + + imageBuffer.memoryAlignment=16 + The value is the alignment in bits. This value will be taken into account by the compile-time images (Image Generator) and the runtime images. @@ -113,7 +132,6 @@ Stride (Compile-time Images) ---------------------------- The stride is dynamic, often depending on the image format and width. -Consequently, the stride cannot be set as a property in the ``display.properties`` file for example. For the compile-time images (Image Generator), a specific extension of the ImageGenerator is required.