๐ฎ Advanced SDL3 Component for ESP32 with universal board support and automatic hardware abstraction.
This is a comprehensive component wrapper for upstream SDL 3.3.0 designed for ESP-IDF, featuring:
- ๐ Universal Board Support - Works across ESP32-S3, ESP32-P4, and other variants
- ๐ฏ Automatic Hardware Detection - No manual board configuration needed
- ๐ฑ Multiple Display Interfaces - SPI, RGB, MIPI-DSI support
- ๐จ Built-in Examples - 4 ready-to-use SDL applications
- โก Zero-Configuration Setup - Board selection via menuconfig
# Add SDL component from registry
idf.py add-dependency "georgik/sdl"
# Add board abstraction layer (GitHub only due to Component Registry limitations)
cd components
git clone --depth 1 https://github.com/georgik/esp-idf-component-SDL_bsp.git georgik__sdl_bsp
# Or add as git submodule
cd components
git submodule add https://github.com/georgik/esp-idf-component-SDL_bsp.git georgik__sdl_bsp# Create snow simulation project
idf.py create-project-from-example "georgik/sdl:snow"
# Create Conway's Game of Life
idf.py create-project-from-example "georgik/sdl:conway"
# Create Mandelbrot fractal visualizer
idf.py create-project-from-example "georgik/sdl:mandelbrot"
# Create bubble physics simulation
idf.py create-project-from-example "georgik/sdl:bubble"# Configure your board
idf.py menuconfig # Navigate to "ESP-BSP SDL Configuration" > "Select Target Board"
idf.py build flash monitor๐บ ESPBrew - Advanced TUI tool for managing builds across multiple boards with SDL examples:
# Install ESPBrew
git clone https://github.com/georgik/espbrew && cd espbrew
cargo build --release
# Use in any SDL example directory
cd your-sdl-project
espbrew . # Interactive TUI - select boards and press 'b' to build
espbrew --cli-only . # CLI mode - builds all boards automaticallyPerfect for SDL Examples: ESPBrew automatically discovers all board configurations and lets you build SDL examples for multiple boards simultaneously. All built-in SDL examples (snow, conway, mandelbrot, bubble) work seamlessly with ESPBrew.
Features:
- ๐ฏ Auto-Discovery - Finds all board configurations automatically
- ๐ฅ๏ธ TUI Interface - Interactive interface with real-time build monitoring
- ๐ Parallel Builds - Build multiple boards simultaneously
- ๐ Script Generation - Creates
build_{board}.shandflash_{board}.shscripts - ๐ Organized Output - Separate build directories and logs for each board
- ๐ฎ SDL-Optimized - Perfect workflow for testing SDL examples across devices
Learn More: https://github.com/georgik/espbrew
This component includes 4 built-in examples showcasing different SDL features:
- Beautiful particle physics with falling snow
- Automatic resolution adaptation (128ร128 to 1280ร720)
- Perfect for demonstrating display capabilities
- Classic cellular automaton with age-based coloring
- Adaptive grid sizing for any display resolution
- Demonstrates complex algorithmic visualization
- Real-time fractal rendering with color cycling
- Fixed-point arithmetic optimized for embedded systems
- Progressive rendering with zoom animation
- Interactive physics simulation with bouncing bubbles
- Touch support on compatible boards
- Showcases fluid animation and user interaction
- ๐ฏ Board Agnostic: SDL code works on any supported board without modification
- ๐ง Menuconfig Integration: Board selection through standard ESP-IDF configuration
- โก No Symbol Conflicts: Clean separation prevents BSP function name conflicts
- ๐ฑ Touch Support: Optional touch interface abstraction
# ESP Component Registry limitations require GitHub installation
cd components
git submodule add https://github.com/georgik/esp-idf-component-SDL_bsp.git georgik__sdl_bsp๐ Documentation: https://github.com/georgik/esp-idf-component-SDL_bsp
- ESP-Box-3 - 320ร240 ILI9341, FT5x06 Touch, OCTAL PSRAM
- M5 Atom S3 - 128ร128 GC9A01, Compact form factor
- M5Stack Core S3 - 320ร240 ILI9341, FT5x06 Touch, QUAD PSRAM
- ESP32-P4 Function EV - 1280ร800 MIPI-DSI, GT1151 Touch, 32MB PSRAM
- ESP32-S3-LCD-EV-Board - 800ร480 RGB, GT1151 Touch, OCTAL PSRAM
- M5Stack Tab5 - 720ร1280 MIPI-DSI (portrait), GT911 Touch, 32MB PSRAM
- ESP32-C6 DevKit - Generic BSP for custom displays
- ESP32-C3-LCDkit - ESP32-C3 development kit
- Universal ESP BSP Generic - Works with any ESP32 + external display
- ESP32 SDL3 Example - Basic SDL setup
- OpenTyrian - Full game port
- Weather Display - IoT dashboard
โโโโโโโโโโโโโโโโโโโ
โ Your SDL App โ
โโโโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโผโโโโโโโโ
โ georgik/sdl โ โ This component (board-agnostic)
โโโโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโผโโโโโโโโ
โ georgik/sdl_bsp โ โ Abstraction layer (GitHub only)
โโโโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโผโโโโโโโโ
โ ESP-BSP โ โ Board-specific drivers
โ Components โ
โโโโโโโโโโโโโโโโโโโ
- ๐ฏ Write Once, Run Anywhere - Same SDL code on all boards
- โก Zero Board Configuration - Automatic hardware detection
- ๐ง Clean Architecture - Clear separation of concerns
- ๐ฑ Touch Ready - Optional touch support abstraction
- ๐จ Rich Examples - 4 built-in demonstrations
- Component Registry: https://components.espressif.com/components/georgik/sdl
- ESP-BSP-SDL Layer: https://github.com/georgik/esp-idf-component-SDL_bsp
- SDL3 Official Docs: https://wiki.libsdl.org/SDL3/