Try out LVGL Pro - A complete toolkit to build, test, share, and ship UIs efficiently!
LVGL
Release

LVGL v8.1 Released with SDL GPU Support and Performance Boosts

LVGL v8.1 brings hardware-accelerated SDL rendering, 3rd party library integration, faster circle drawing, and RT-Thread/ESP32 component support.

Gabor Kiss-VamosiGabor Kiss-Vamosi7 min read

Overview#

LVGL v8.1 is a minor release that packs in numerous fixes and a wealth of new features. This update enhances performance, expands platform support, and integrates several powerful capabilities directly into the core library.

Key highlights include:

  • Built-in support for SDL-based GPU drawing
  • Much faster circle drawing in the software renderer
  • Several 3rd party libraries merged directly into LVGL
  • LVGL added as an RT-Thread and ESP32 component

Breaking Changes#

Breaking Changes

The calendar widget now includes its header directly within the widget structure. This change may require updates to existing calendar implementations.

Commit: 2e08f80


Architectural Improvements#

3rd Party Library Integration

Small, widely-used 3rd party libraries are now integrated directly into LVGL, reducing dependency management overhead and improving out-of-the-box functionality.


New Features#

Display and Rendering#

  • Direct mode drawing: Add support for direct-mode rendering #2460
  • Hardware-accelerated SDL2 rendering: GPU acceleration using SDL2 #2484
  • Non-fullscreen display utilities: Support for rendering to display subsections #2724, #2583
  • Multiply blend mode: Add LV_BLEND_MODE_MULTIPLY cc78ef4

Platform Support#

  • RT-Thread integration: Full support for RT-Thread RTOS with device drivers and build system #2660, #2674, #2719
  • ESP32 component: LVGL now available through the ESP32 component manager #2521
  • Win32 filesystem driver: New filesystem driver based on Win32 API #2701
  • MicroPython interface target: Improved CMake interface for MicroPython #2529

Widgets and Components#

  • Rlottie integration: LVGL-Rlottie interface added as 3rd party library #2700
  • Keyboard user-defined modes: Add custom keyboard layouts #2651
  • Keyboard button popovers: Show popovers on button press for btnmatrix/keyboard #2537
  • Message box content area: Add custom content area to msgbox #2561
  • Message box improvements: Omit title label unless needed #2539, add function to get selected button index #2538
  • Switch animation: Smooth animation when changing switch state #2442
  • Spinbox enhancements: Support bidirectional digit steps with encoder #2644, cursor positioning #2314
  • Span text improvements: Indent supports percentage for fix and break modes #2693, missing spangroup functions #2379

Object System#

  • Snapshot API: Take snapshots of objects #2353
  • Animation timeline: New timeline API for coordinated animations #2309
  • Object manipulation:
    • lv_obj_move_to_index() and lv_obj_get_index() #2514
    • lv_obj_swap() for swapping objects #2461
    • lv_obj_del_delayed() for delayed deletion c6a2e15
    • lv_obj_is_initialized() #2402
    • lv_obj_get_x/y_aligned() 98bc1fe
  • Keypad and encoder scrolling: Backported from v7 page to v8 obj #2390

Events#

  • Child lifecycle events: LV_EVENT_CHILD_CREATED and LV_EVENT_CHILD_DELETED #2618
  • Screen load events:
    • LV_EVENT_SCREEN_(UN)LOAD_START 7bae9e3
    • LV_EVENT_SCREEN_LOADED/UNLOADED ee5369e
  • Enhanced draw events: Improved parameters for LV_EVENT_DRAW_PART_BEGIN/END 88c4859
  • Event callback management: lv_obj_remove_event_cb_with_user_data() 4eddeb3
  • Animation user data: Interface for handling animation user data #2415
  • Scroll animation access: Pass scroll animation to LV_EVENT_SCROLL_BEGIN ca54ecf

Configuration and Memory#

  • Configurable memory buffer: Make LV_MEM_BUF_MAX_NUM configurable #2747
  • Memory pool allocation: LV_MEM_POOL_ALLOC support #2458
  • Memory monitoring: Add LV_USE_MEM_PERF/MONITOR_POS acd0f4f
  • Overwritable log macros: Allow overwriting LV_LOG_... macros 17b8a76

Additional Features#

  • Canvas opacity: lv_canvas_set_px_opa() b3b3ffc
  • Image size property: Add img_size property #2284
  • Arc advanced hit test: Support for LV_OBJ_FLAG_ADV_HITTEST dfa4f5c
  • RTL improvements: Scrollbar placement on the left with RTL base direction 906448e
  • Tick validation: Check if lv_tick_inc() is called aa6641a

Performance Improvements#

Circle Drawing Reimplementation#

The circle drawing algorithms have been completely reimplemented, delivering significantly faster rendering for rounded elements.

Rectangle Drawing Optimization#

Rectangle drawing algorithms have also been rewritten for better performance.

Additional Performance Enhancements#

  • Animation timeline control: Add lv_anim_timeline_stop() #2411
  • Mask optimization: Ignore masks if they don't affect the current draw area a842791
  • Buffer management: Optimize wait timing for lv_disp_flush_ready() with dual buffers d0172f1
  • Additive blending: Speed up additive blending operations 3abe517
  • Cycle limit checks: Remove lv_obj_get_child_cnt() from cycle limit checks ebb9ce9

Bug Fixes#

This release includes over 200 bug fixes across all areas of the library. Major fix categories include:

Rendering and Drawing#

  • Fixed border drawing errors with various radius/width configurations
  • Corrected gradient drawing and clipping issues
  • Fixed shadow drawing with large shadow widths and radius=0
  • Resolved image drawing issues with radius masks
  • Fixed arc, meter, and circle invalidation problems
  • Corrected rectangle drawing with clip_corner enabled

Widgets#

  • Calendar: Fixed today and highlighted day calculations
  • Chart: Fixed cursor positioning, scrolling, and indicator drawing
  • Dropdown: Multiple invalidation and keyboard handling fixes
  • Label: Fixed BIDI processing, clipping of italic letters, and LONG_DOT mode crashes
  • Table: Fixed cell positioning, border handling, and off-by-one errors
  • Textarea: Fixed cursor drawing, password mode character deletion, and scroll to cursor
  • Span: Fixed opacity, overflow, decoration, and alignment bugs
  • Checkbox, switch, roller, msgbox, and many other widget fixes

Object System#

  • Fixed layout update and invalidation issues
  • Corrected object positioning with RTL base direction
  • Fixed alignment and size calculation problems
  • Resolved scroll handling and scrollbar visibility issues
  • Fixed group and focus management edge cases

Memory and Platform#

  • Fixed memory leaks in display removal and PNG/SJPG decoders
  • Corrected memory alignment on 32-bit platforms
  • Fixed filesystem driver seek and error handling
  • Resolved compilation issues across multiple toolchains (Keil, IAR, GCC)
  • Fixed RT-Thread, STM32, PXP, and VGLite driver issues

BiDi and Internationalization#

  • Fixed BiDi weak character handling
  • Corrected RTL dropdown list positioning and object alignment
  • Fixed Arabic vowel character processing
  • Resolved base direction handling in multiple widgets

For a complete list of all 200+ fixes, see the full changelog.


Examples#

New and improved examples added:

  • Chart examples: Area chart example #2507, chart with data gaps #2565
  • Animation examples: Cubic-bezier demo #2393, text with gradient 462fbcb
  • Checkbox example: Radio button implementation d089b36
  • List example: lv_example_list_2 #2545
  • MicroPython examples: Added MP versions of various examples #2412, #2347

Documentation#

Extensive documentation updates including:

  • Updated porting guide with v8 API changes
  • Completed style property descriptions
  • Added animation image widget documentation
  • Fixed numerous typos and clarified confusing sections
  • Updated filesystem, layout, and color documentation
  • Added commit message format guidelines
  • Updated Arduino and MicroPython integration guides

Over 70 documentation pull requests and commits improving clarity, fixing broken links, and updating examples.


Testing and CI#

Major improvements to the testing infrastructure:

  • Unit tests: Added tests for text processing, arc, dropdown, and checkbox widgets #2623, #2617, #2551
  • Test infrastructure: Converted Makefile to CMake #2495, added parallel test execution #2515
  • Code coverage: Integrated gcov and codecov e35b1d0
  • MicroPython CI: Added ESP32, STM32, and RP2 port tests #2629
  • Input emulation: Added mouse, keypad, and encoder emulators for automated testing

Migration Notes#

While v8.1 maintains backward compatibility for most use cases, there is one breaking change:

Calendar Widget: The calendar header is now directly embedded in the calendar widget. If you were accessing or customizing the header separately, you'll need to update your code.

For detailed migration guidance, see the v8.1 migration guide.


Get Started#

Update to LVGL v8.1:

git clone --branch release/v8.1 https://github.com/lvgl/lvgl.git
bash

Or update your existing repository:

git checkout release/v8.1
git pull
bash

For platformIO, ESP-IDF, Arduino, or other package managers, update your dependency to v8.1.0.

Visit the documentation to explore all the new features and improvements.

About the author

Gabor Kiss-Vamosi
Gabor Kiss-Vamosi

CEO & Creator of LVGL

Founder and lead developer of LVGL, the open-source embedded graphics library used in millions of devices worldwide.

Meet the people behind the blog

Discover the talented writers sharing their knowledge about LVGL

View Authors

Subscribe to our newsletter to not miss any news about LVGL. We will send maximum of 2 mails per month.

LVGL

LVGL is the most popular free and open source embedded graphics library targeting any MCU, MPU and display type to build beautiful UIs.

We also do services like UI design, implementation and consulting.

© 2026 LVGL. All rights reserved.
YouTubeGitHubLinkedIn