You are using staging server - a separate instance of the ESP Component Registry that allows you to try distribution tools and processes without affecting the real registry.
# ESP Display Present `esp_display_present` connects a renderer-produced pixel surface to an `esp_lcd` panel. It is bundled with ESP-GSP but does not depend on scene, widget, or input semantics. ## Responsibilities - Validate the display target and select a presentation strategy. - Lease render surfaces or bounded draw buffers. - Submit full-frame or dirty-area updates. - Handle framebuffer ownership, TE synchronization, rotation, byte order, cache synchronization, and optional hardware copies. - Track ordered completion and shut down without releasing in-flight buffers. The renderer owns logical damage and pixel generation. The presenter owns physical buffer coherence and panel submission. ## Public API Include `esp_display_present.h`. Configuration and shared types are defined in `esp_display_present_config.h` and `esp_display_present_types.h`. The primary object is `esp_display_presenter_t`. A renderer: 1. creates a presenter from an `esp_display_present_target_config_t`; 2. acquires a frame contract; 3. renders the requested full surface or partition; 4. submits logical coverage, or cancels the frame; 5. stops and deletes the presenter after producer work has drained. The draw contract is one of: | Contract | Renderer responsibility | |---|---| | `PARTITION` | Render requested areas into a presenter-owned draw buffer | | `DIRECT` | Render dirty areas into a coherent full logical surface | | `FULL` | Redraw the complete logical surface | Presentation mode should normally remain `ESP_DISPLAY_PRESENT_MODE_AUTO`. Accurate panel class, framebuffer, TE, rotation, and byte-order information in the target configuration lets the component select the correct path. ## Concurrency The presenter has one frame producer. Another task may request stop, but frame acquire, submit, and cancel calls must remain serialized. In-flight hardware work may temporarily make deletion return `ESP_ERR_INVALID_STATE`; retain the object and retry after the producer has stopped. Headers under `private_include/` and files under `src/` are implementation details and carry no public compatibility promise.
idf.py add-dependency "espressif2022/esp_display_present^0.1.0"