feat(d211-linux): add ArtInChip D211 fbdev host and cross-build - #407
Draft
boa-z wants to merge 5 commits into
Draft
feat(d211-linux): add ArtInChip D211 fbdev host and cross-build#407boa-z wants to merge 5 commits into
boa-z wants to merge 5 commits into
Conversation
boa-z
force-pushed
the
feat/d211-linux
branch
2 times, most recently
from
September 11, 2026 23:58
4a6e494 to
c7f2fb3
Compare
ui_render, ui_render_scaled, and ui_render_incremental_scaled are exported C ABI functions the raster implementation already provides; the public header only declared the unscaled incremental form.
The D211DBV runs Luban Linux 5.10 on RISC-V with an 800x480 32bpp panel and a GT911 touchscreen. The host presents the software raster surface through /dev/fb0, probes the framebuffer geometry and channel bitfields with FBIOGET_VSCREENINFO/FBIOGET_FSCREENINFO, fixes the visible page with FBIOPAN_DISPLAY, and finds the touch device by capability instead of eventN. The build runs on a canonical Ubuntu builder with the Luban Xuantie GCC wrapper and sysroot; D211_LUBAN_SDK selects the SDK root. The final link uses LLVM LLD from the pinned Rust nightly because binutils 2.35 rejects modern RISC-V ELF attributes. The private d211-linux-dev target (host ABI 11) renders the full 800x480 panel at raster density 1, and tools/d211-linux/remote-build.sh wraps sync, build, and artifact fetch with the builder taken from D211_REMOTE.
boa-z
force-pushed
the
feat/d211-linux
branch
from
September 12, 2026 00:31
cef7849 to
b522709
Compare
The touch backend now runs the protocol-B slot state machine (ABS_MT_SLOT, ABS_MT_TRACKING_ID, per-slot positions) and delivers every live contact through pocket_runtime_tick_contacts(), with the bounds hit resolved once at each contact's own down edge. Single-touch devices still map to one id-0 contact, and the host tracks up to D211_MAX_CONTACTS (8). Validated against the panel with a local probe: five simultaneous contacts, each id keeping its own coordinates and down-edge hit. stop-ui now sends SIGKILL because test_lvgl ignores SIGTERM and keeps the panel.
boa-z
force-pushed
the
feat/d211-linux
branch
from
September 12, 2026 02:57
2b6abde to
14fedae
Compare
This was referenced Sep 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a private
d211-linux-devtarget and native host for the ArtInChip D211DBV running Luban Linux 5.10 on RISC-V. Software rendering only — no EGL, GLES, DRM, or Wayland.What landed
hosts/d211-linux/— fbdev presentation withFBIOGET_VSCREENINFO/FBIOGET_FSCREENINFOprobing and a runtime channel-bitfield check;FBIOPAN_DISPLAY(yoffset=0)at startup so the host owns the scanned-out page; capability-probed evdev touch (EVIOCGNAME/EVIOCGBIT/EVIOCGABS, MT axes preferred); bounds hit resolved once at the down edge; damage-rect presentation scaled by raster density.tools/d211-linux-profile.ts— host ABI 11,platform: "linux", takeover form, logical viewport equal to the 800×480 panel at raster density 1, capabilitiesinput.touchandtext.glyphs.baked. Stays out ofPOCKET_TARGETSuntil the hardware acceptance receipt is complete.tools/d211-linux.ts+tools/d211-linux/build-runtime.sh— builds on the Ubuntu Luban builder with the Xuantie GCC wrapper and sysroot; final link through LLVM LLD fromnightly-2026-07-02because binutils 2.35 rejects modern RISC-V ELF attributes; JSON receipt records the commit, toolchain versions, sysroot, and digests.tools/d211-linux/remote-build.sh— macOS → builder sync, build, and artifact fetch in one command.apps/d211-demo/— Hero wrapper on the wide-surface (largeLayout) variant.fix(ui-cabi)— declares the exported scaled raster entry points (ui_render*_scaled) inpocket_ui_cabi.h.test(d211-linux)— profile, host-probe, and build-bridge tests plus the demo admission-matrix entry.Hardware validation
D211DBV, Luban Linux 5.10.44, build
472f7e072276bd38:app.jseval)MemAvailableCount: 34)The captured 800×480 frame has no black pixels and the channel order matches the guest BGRA output.
/tmpis a tmpfs on this board; an install under/tmpOOM-killed the host at 11 MB available, sodeployinstalls to/opt/pocketjson the UBIFS rootfs, where the bundle stays reclaimable as page cache.One correctness fix belongs to the host build:
main.cwas compiled with its fallback raster density whilepocket_runtime.creceived the plan value, so a density-1 plan rendered a scaled(2) surface. The define now reaches both translation units.Reproduce
Build identity
nightly-2026-07-02, targetriscv64gc-unknown-linux-gnu(rustc 1.98.0-nightly)gcc-ld/ld.lld)ba5bdd0dc013518768e76cd9e05cd30ed53dd35b(2026-06-04)ec5ab5cadc5a87762188ac9be0128a17eeb7be5c0a3e02e9f664d1cd088d919a(2,818,360 bytes)5df82ab904313f300ff5f5d8f05f3b11f9a501fc8b916ac1183e3544b1dabddaOut of scope
Camera (TP9950), audio, CAN, and ADC are not touched. The
test_lvglautostart is still stopped manually before launch.d211-linux-devpromotes to a registered target after the remaining receipt items (multi-contact input, launch integration).Baseline is current
main; the handover plan'sv0.10.1suggestion predatesv0.11.0.