Skip to content

EUI-NEO v0.5.8

Choose a tag to compare

@sudoevolve sudoevolve released this 03 Sep 08:42
· 13 commits to main since this release

EUI-NEO v0.5.8

本次版本完善动态图像输入和双渲染后端能力,并将 Xmake 外部项目接入整理为开箱即用的单文件应用模式。

发布日期:2026-09-03

主要更新

动态纹理与图像流

  • 新增线程安全、有界的 eui::ImageStream,生产线程提交帧,渲染线程消费最新帧。
  • 新增 RGBA8BGRA8NV12I420P010 图像格式。
  • 支持 BT.601、BT.709、BT.2020,以及 Full/Limited 色彩范围。
  • OpenGL 与 Vulkan 均支持 NV12/I420/P010 原生多平面纹理上传和 GPU YUV 转 RGB。
  • 后端不支持原生 YUV 格式时自动回退到 CPU RGBA8 转换,保持 API 和显示结果一致。
  • 动态纹理支持尺寸、格式切换、更新失败回退和最新帧丢弃策略。
  • 动态图像不会错误进入 retained layer 缓存,帧更新会正确触发局部重绘。

渲染与性能

  • 优化 retained image、文本损坏区域和 backdrop blur 的捕获与采样路径。
  • 保留 OpenGL/Vulkan retained layer 缓存,连续尺寸变化时复用容量并延迟安全释放资源。
  • Vulkan image shader、rounded-rect shader 和对应 SPIR-V 生成头同步更新。

应用入口与构建

  • Xmake 外部项目可通过 app_runner = true 只编写一个 main.cpp,由框架提供窗口、输入、渲染和应用主循环。
  • Xmake 支持 GLFW/SDL2 与 OpenGL/Vulkan 组合选择,默认不构建可选 FFmpeg 播放示例。
  • 显式启用 --ffmpeg_video=y 时,Xmake 才拉取并构建 FFmpeg 视频示例。
  • CMake 与 Xmake 版本号统一更新为 0.5.8。
  • Windows Xmake 文档补充 MinGW-w64 工具链选择和宿主依赖配置说明。
  • 修复 GLFW 静态库缺少 Null 平台实现导致的 _glfwConnectNull 链接错误。
  • 修复 MinGW 构建误传 MSVC /TC 等参数的问题,并补充 JetBrains MinGW bfd-plugins 兼容处理。
  • 修复 macOS GLFW Cocoa 定时器、Objective-C 源文件编译模式和 ARC 设置,兼容 Apple Silicon 构建。
  • macOS Vulkan 配置可通过 Homebrew 前缀自动发现 SDK,不需要写死机器路径或手动设置固定目录。
  • Linux GLFW 补充 librt 链接,兼容仍将 clock_gettime 等符号放在 librt 中的旧版系统。
  • 补充 CentOS/RHEL 常见系统字体目录探测,改善精简安装环境下的默认字体加载。
  • xmake-repo 的 eui-neo 配方同步 Linux 托盘检测:默认不启用托盘以保证基础应用无需 GTK/GLib 开发包;显式启用时优先使用 gio-2.0 的 SNI 后端,并支持旧版 AppIndicator 回退,也可通过 tray=false 保持关闭。
  • xmake-repo port 中的 GLFW、glad、md4c 及框架桥接 C 源文件显式按 C 编译,避免 MSVC 将 C99 指定初始化误判为 C++。
  • xmake-repo 通过内部 port revision 自动失效旧包缓存,避免继续使用修复前的二进制包。

文档与示例

  • 新增中文《动态纹理与图像流》文档,说明帧格式、色彩转换、线程模型、回退路径和测试方法。
  • 新增 dynamic_texture 格式验证示例。
  • 新增可选 ffmpeg_video_player 示例,演示 FFmpeg 解码到 NV12 再提交 ImageStream 的完整链路。
  • 更新 Xmake、CMake、SDK 和运行资源集成说明。

升级说明

  • 动态纹理 API 为新增能力,不改变现有静态图片 API。
  • ImageFrame 提交后必须保持其平面缓冲区有效且不可修改,直到该帧不再被引用。
  • YUV 帧应明确填写色彩空间和色彩范围;不确定时不要依赖默认值。
  • FFmpeg 播放示例属于可选示例,不会成为核心库的运行时依赖。

验证

  • image_stream:帧校验、容量限制、最新帧消费、RGBA/BGRA/YUV 转换。
  • image_stream_primitive:原生动态纹理创建、格式切换、更新失败回退。
  • dirty_rects:动态内容与局部重绘交互。
  • Windows/MSVC:已完成 eui_neo OpenGL/GLFW 回归构建,桥接 C 文件按 C 编译且无 C7555 或 _glfwConnectNull 链接错误。
  • Linux:已完成 GLFW 源文件、X11 链接项、librt 和托盘依赖的配置审计;运行验证需要目标机安装对应 X11 开发包。
  • macOS:已完成 Cocoa/Objective-C、Homebrew Vulkan SDK 和 Apple Silicon 配置审计;运行验证需要 macOS/Xcode 环境。
  • OpenGL/Vulkan 动态纹理示例和 SDL2/GLFW 组合仍应在各目标平台分别运行验证。

开发通道

  • 稳定版本固定为 v0.5.8,源码与依赖版本可复现。
  • 最新开发源码通过 EUI-NEO dev 分支和 xmake-repo 的 eui-neo dev 包提供,不改变 v0.5.8 的发布内容。

完整变更v0.5.7...v0.5.8