ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ODROID 设备如何配置 RetroArch Exynos G2D 视频驱动?

ODROID 设备如何配置 RetroArch Exynos G2D 视频驱动? ODROID 设备如何配置 RetroArch Exynos G2D 视频驱动【免费下载链接】RetroArchCross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.项目地址: https://gitcode.com/GitHub_Trending/re/RetroArch如果你在用 Hardkernel ODROID-X2/U2/U3 这类基于 Samsung Exynos SoCExynos4412、Exynos5250的开发板运行 RetroArch想避开 Mali/PowerVR GPU 那套只能以二进制 blob 提供的用户态驱动可以用 RetroArch 自带的exynos视频驱动它通过 Exynos DRM 层做画面呈现并调用 SoC 上的 G2D 硬件块完成 framebuffer 的缩放与 blit全程不依赖闭源 GPU 栈适合搭配上游内核使用。选择这个驱动前要注意一个取舍G2D 替代 GPU 后不再支持 GPU shader来增强画面。文档明确建议如果你的核心依赖 shader 增强应继续用 EGL/GLES 视频驱动见 README-exynos.md。另外 README-mali_fbdev_r4p0.md 也指出Odroid 硬件上的 fbdev 实现缺少WAITFORVSYNCioctl因此在这些板子上应使用 Exynos 驱动而不是 mali_fbdev。前置条件内核与 libdrm驱动走 libdrm API 与 DRM 交互上游树中还缺一些补丁因此有两个硬性前置内核厂商提供的 3.8.y 内核因为时钟配置问题无法使用 G2D需要基于上游 3.15.y 的内核。文档指向作者维护的linux-odroid仓库的odroid-3.15.y分支外部仓库此处仅说明来源具体安装步骤以该仓库中的 README-ODROID 文档为准。libdrm同样使用作者仓库libdrm的exynos分支。从源码构建 libdrm 时用下面命令开启 Exynos 实验性 API./configure --enable-exynos-experimental-api这一步必须在 libdrm 构建目录中执行如果 Exynos API 支持没有开启RetroArch 侧会因缺少libdrm_exynos库而无法启用该驱动——构建系统在 qb/config.libs.sh 中通过 pkg-config 的libdrm_exynos检测它。构建 RetroArch 并启用 exynos 驱动Exynos 视频驱动不是默认编译进去的qb/config.params.sh 中HAVE_EXYNOS默认值为no。构建时显式传入--enable-exynos./configure --enable-exynos make参数映射逻辑在 qb/qb.params.sh--enable-opt把对应的HAVE_OPT置为yes。启用后Makefile.common 会把gfx/drivers/exynos_gfx.o加入编译目标并链接$(DRM_LIBS) $(EXYNOS_LIBS)、附加$(DRM_CFLAGS) $(EXYNOS_CFLAGS)因此上面 libdrm 的构建产物需要能被链接器找到通过 pkg-config 暴露。运行时配置视频驱动与显示设置驱动名是exynos注册入口见 gfx/video_driver.c。它只响应以下三项视频设置来自 README-exynos.md 的 Configuration 一节video_monitor_index映射到 DRM connector 索引。为0时选择第一个可用的 connector即已连接显示设备且至少提供一个可用模式非零值强制选择该索引。文档给出的实例作者的 ODROID-X2 搭配 odroid-3.15.y 内核时HDMI connector 的索引是 1。video_fullscreen_x和video_fullscreen_y指定 DRM 应选择的全屏模式。为0时选 connector 的原生模式非零时尝试选择指定模式若该模式不在 connector 的支持列表中选择可能失败。在 RetroArch 中可以通过界面Settings → Video或直接写入配置项来设置这三项。驱动名与其余未列出的视频设置对该驱动无效这一点是文档的明示范围不要照抄其他驱动的完整配置。验证性能统计日志exynos_gfx.c 内置了性能统计由编译期开关控制——exynos_gfx.c 中EXYNOS_GFX_DEBUG_PERF当前默认为0需要改为1后重新构建才会输出统计。启用后退出时驱动通过RARCH_DBG打印见 exynos_gfx.c[Exynos] total memcpy calls: %u [Exynos] total g2d calls: %u [Exynos] total memcpy time: %f seconds [Exynos] total g2d time: %f seconds [Exynos] average time per memcpy call: %f microseconds [Exynos] average time per g2d call: %f microsecondsREADME-exynos.md 中给出了一次真实测试的文档示例输出snes9x-next 核心游戏原生分辨率 256x224输出 1280x720按原生比例缩放为 822x720total memcpy calls: 18795 total g2d calls: 18795 total memcpy time: 8.978532 seconds total g2d time: 29.703944 seconds average time per memcpy call: 477.708540 microseconds average time per g2d call: 1580.417345 microseconds这是示例数值不是任何环境下的固定预期它说明当时平均每帧约 2058 微秒约 486 FPS。文档同时按像素量线性外推1920x1080 输出时单帧约 7207 微秒仍有约 138 FPS。已知限制与不适用情形README 的 Issues and TODOs 一节列出了当前仍存在的问题配置前需要知道宽高比计算有待改进用户手动指定的宽高比目前未生效字体渲染与 blit 低效后备缓冲每帧整体清除没有按字形区域做局部失效重绘blit 的源端使用临时 GEM buffer要用userptr功能还需启用 IOMMU 支持。此外两类情形不要使用本驱动需要 GPU shader 增强画面时改用 EGL/GLESSoC 不是 ExynosG2D 驱动只对接 Exynos DRM/G2D 硬件。更细粒度的 TODO 说明在 exynos_gfx.c 源码注释中。【免费下载链接】RetroArchCross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.项目地址: https://gitcode.com/GitHub_Trending/re/RetroArch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表