Vivante VGLite API Driver Release Notes

This file includes a list of high level updates for each driver release.

OVERVIEW
========

Vivante VGLite Graphics API is designed to support2D vector and 2D raster-based operations for rendering
interactive user interface that may include menus, fonts, curves, and images. The VGLite API allows users
to develop customized applications for mobile or IOT devices that include Vivante Vector Graphics IP.

Please refer to

    Vivante.Programming.VGLite.Vector.Graphics.API-<version>-<date>.pdf

document for the VGLite API functions.

LIMITATION
==========

    1. Currently VGLite API driver only supports 32-bit OS/RTOS, as VGLite HW/SW is designed for embedded devices.
    2. VGLite driver only support single thread, single context rendering, it does not support multi-thread rendering.
    3. VGLite GPU does not include MMU, so VGLite driver programs GPU hardware with system memory physical addresses directly.


CHANGES
=======

March 2024: vglite_4_0_70
-------------------------

    1. Port DumpVGL to driver project, and rename it to dumpAPI.
    2. Modify vg_lite_get_transform_matrix() input parameters to float type, improve transform accuracy. 
    3. Add alignment rules and refine original alignment rules.
    4. Refine submit() function to avoid the boundary case that there is less than 8 bytes left in the command buffer for a END command.
    5. Enable hw process lvgl normal blend mode when lvgl not support while src premultiply is zero.
    6. Add driver support for the new gcFEATURE_VG_512_PARALLEL_PATHS.
    7. Add ts buffer and count buffer size to avoid memory overflow.
    8. Merger Zephyr plateform code.

January 2024: vglite_4_0_64
-------------------------

    1. Add a new parameter "vg_lite_buffer_t *target" to vg_lite_scissor_rects() API. 
    2. Support two memory pool in Linux environment. Add a new API vg_lite_set_memory_pool.
    3. Allow VGLite API matrix paramters to be NULL which indicates an identify matrix.
    4. Support single command buffer. By default, VGLite driver uses two command buffers.
    5. Refine driver settings for gcFEATURE_VG_STRIPE_MODE, gcFEATURE_VG_SPLIT_PATH, gcFEATURE_VG_CLOCK_GATING.
    6. Restore VGLite default command buffer size to 32KB to reduce memory consumption.
    7. Define VG_LITE_BLEND_PREMULTIPLY_SRC_OVER as an alias of VG_LITE_BLEND_NORMAL_LVGL.
    8. Add a new API "vg_lite_dump_png(const char *filename, vg_lite_buffer_t *buffer)" for Linux debugging.
    9. Add VG_LITE_GPU_IDLE_STATE query in vg_lite_get_parameter() API for application.
    10. Add driver support for the new gcFEATURE_VG_NV24_INPUT.

November 2023: vglite_4_0_47
-------------------------

    1. Add a new vg_lite_copy_image() API for OpenVG vgCopyImage support.
    2. Add logic in vg_lite_init() to handle repeated vg_lite_init() calls.
    3. Add gcFEATURE_VG_MATH_PRECISION_FIX for enabling the new driver code for math precision fix.
    4. Use the new simplied bezier implementation by default. Remove gcFEATURE_VG_SIMPLYFIED_BEZIER.
    5. Use reset operation to restart the GPU after GPU hang.
    6. Add a new API vg_lite_get_parameter to get scissor parameter.
    7. Delete vg_lite_set_premultiply API as vg_lite_blend_t now covers all blend modes (non-premultiplied and premultiplied).
    8. Add gcdVG_ENABLE_AUTO_CLOCK_GATING to determine if auto clock gating feature is enabled.
    9. Add DEC2.0 feature support in driver for the new gc265 core.
    10. Fix a TS Clock gating bug. Add clock gating feature into option.h.


May 2023: vglite_4_0_22
-------------------------

    1. Free masklayer correctly and refine masklayer parameter.
    2. Fix gc265 set_scissor draw path hang bug. TS area size must be less than target size.
    3. Fix a VGLite kernel memory leak issue.
    4. Fix issue when scale/bias is negative.
    5. Adding the -g0 option to reduce ko file size. 
    6. Add paint type enum and config related register in vg_lite_blit.
    7. Replace VLC_OP_CLOSE to VLC_OP_END in vg_lite_init_arc_path.
    8. Add input color parameter in vg_lite_draw_pattern.

April 2023: vglite_4_0_18
-------------------------

    1. Make the gamma feature implementation compatible to VGLite 3.x driver.
    2. Add VG_LITE_S8, VG_LITE_S16, VG_LITE_S32 support in vg_lite_init_arc_path and vg_lite_append_path.
    3. Fix a VLC_OP_CLOSE bug in vg_lite_update_stroke.
    4. VG_BW_1 should have the same alignment requirement with VG_A_1.
    5. Fix a bounding box bug in vg_lite_append_path.
    6. Fix a VLC_OP_xxWARC_REL bug in _convert_arc.
    7. Change default command buffer size to 128KB to support large SVG path rendering.
    8. Correct width computation in vg_lite_update_linear_grad() to fix the rendering error in gradient.svg.
    9. Add error check in push_data() for insufficient command buffer size.
    10. Set Src and Dst color pre_multiplied properly for gc265.
    11. Correct color transform register settings.
    12. Fix a vg_lite_scissor_rects enable/disable bug.


March 2023: vglite_4_0_15
-------------------------

    1. Add DMA buffer support for vg_lite_map/unmap APIs.
    2. Add support for blend mode VG_LITE_BLEND_PREMULTIPLY_SRC_OVER.

February 2023: vglite_4_0_11
-------------------------

    1. Enable GC355, GC255, GC265 support in VGLite 4.x driver.
    2. Add VGLite API trace function which can be enabled with gcFEATURE_VG_TRACE_API macro.
    3. Add a new API vg_lite_flush_mapped_buffer for flushing mapped buffer flush.
    4. Fix the pixel shift issue when an image is blit with linear filtering.


October 2022: vglite_4_0_0
--------------------------

    1. Major VGLite API update to version 3.0 which includes some API changes and new APIs to support GC555 new features.
    2. Add vg_lite_set_pixel_matrix(...) API to support pixel matrix transfermation.
    3. Add vg_lite_gaussian_filter(...) API to support 3x3 gaussian blur.
    4. Add vg_lite_set_color_transform(...) API and enable/disable APIs to support pixel color transfrom.
    5. Add masklayer APIs vg_lite_create_masklayer, vg_lite_render_masklayer, etc. to support VG masklayer functions.
    6. Add VSI FLEXA interface support for VG IPs that include FLEXA feature.
    7. Update vg_lite_blit_rect() API to use "vg_lite_rectangle_t *rect" as the rectangle area input parameter.
    8. Change runtime feature check to compile time feature selection with build flags in vg_lite_options.h.


August 2022: vglite_3_1_17
--------------------------

    1. Set default command buffer size to 64K.
    2. Add feature global alpha.
    3. Add feature ETC2.
    4. Add feature color key.
    5. Add driver support for arc path.
    6. Add double image feature.
    7. Add driver support for 24 bit feature.
    8. Add APIs for dither.
    9. Add the AHB bus configuration for alpha blending.
    10. Add vg_lite_kernel_flexa_info_t information.
    11. Add free path data memory allocated by driver.
    12. Support vg_lite_flush and vg_lite_finish call order.
    13. Add API vg_lite_set_command_buffer and vg_lite_set_ts_buffer.
    14. Support bounding box for path.
    15. Add API vg_lite_path_append support arc path and fix clockwise and counterclockwise order errors.
    16. Add gcFEATURE_BIT_VG_IM_INPUT check in function.
    17. Add feature DECNano compress and decompress.
    18. Add API vg_lite_get_transform_matrix.
    19. Add API to set stoke color.
    20. Add LVGL feature recolor.
    21. Add feature index endian.
    22. Add format A8RGB565_PLANAR.
    23. Add ts buffer block processing.
    24. Add feature pixel matrix.
    25. Add blend modes VG_LITE_BLEND_NORMAL_LVGL, VG_LITE_BLEND_MULTIPLY_LVGL,
        VG_LITE_BLEND_ADDITIVE_LVGL, VG_LITE_BLEND_SUBTRACT_LVGL.
    26. Add stripe mode API.
    27. Add vg_lite_set_premultiply API.
    28. Add limit parallel path feature.
    29. Add vg_lite_scissor_rects API.

June 2022: vglite_3_1_16
------------------------

    1. Enable vg_lite_path_append API to support arc paths.
    2. Skip when the length or width of the rectangle area is 0.
    3. Add support for the path bounding box.

January 2022: vglite_3_1_15
---------------------------
    1. Turn off PE clear by default.
    2. Fix the build issue caused by undefined types u32 and s32 for FreeRTOS.
    3. Add support for all path data formats in the vg_lite_path_append API.
