Rockchip

2023-11-10

1 Graphics介绍

1.1 使用X11 Graphics

Xserver 是在常规桌面 Linux 平台上使用的显示系统。

Rockchip 有一个定制的 Xserver ,可以实现 glamor 2D acceleration 。 Xserver 通常具有良好的兼容性,但性能可能会比其他显示系统少一些,而且它的体积要大一些。

Gstreamer X11 sink 支持 DRM 4k-Video 渲染(虽然很麻烦)。

1.1.1 架构图

Linux OS 中的 X11 结构

RTENOTITLE

1.1.2 DDX(armsoc)

源代码: git clone git@github.com:markyzq/xf86-video-armsoc.git
主线: git://anongit.freedesktop.org/xorg/driver/xf86-video-armso

DDX 支持:

  1. 支持常见的x11显示和Hwcursor
  2. DRI2(EGL X11 客户端的请求)
  3. umplock(支持 EGL x11 客户端不撕裂)

/etc/X11/xorg.conf: Xserver 将解析此配置以查找 DDX 并配置信息

Section "Device"
Identifier  "Mali-Fbdev"
Driver "armsoc"
Option           "UMP_LOCK"   "true"
EndSection
Section "Screen"
Identifier   "Default Screen"
Device       "Mali-Fbdev"
DefaultDepth 24
EndSection

1.1.3 UMPLOCK

源代码: wget http://malideveloper.arm.com/downloads/drivers/DX910/r6p1-01rel0/DX910-SW-99002-r6p1-01rel0.tgz

将 umplock 打补丁到内核,就可以找到 umplock 设备节点:

/dev/umplock

不要忘记启用 DDX umplock 选项:

Option           "UMP_LOCK"   "true"

umplock 仅用于 x11 图形堆栈,不需要 Wayland,因为 mali 已经在其驱动程序上进行了 Wayland 同步。

1.1.4 DDX(modesetting)

详细介绍见  ModeSetting  。

1.1.5 X11性能测试

2D 性能:

x11perf

3D 性能:

glmark2-es2

X11perf 工具可以从 x11-apps 轻松获取。

glmark2-es2可以从GitHub - glmark2/glmark2: glmark2 is an OpenGL 2.0 and ES 2.0 benchmark

获取glmark2-es2 源代码也可以为 x11、drm(gbm) 和 wayland 构建。

1.2 使用Wayland Graphics

Weston 是 Wayland 合成器的参考实现, 本身是一个有用的合成器。

1.2.1 架构图

RTENOTITLE

1.2.2 Weston

Wayland 合成器的 Weston 参考实现。

     1. 使用 drm 和 gpu 渲染器运行 Wayland

export XDG_RUNTIME_DIR=/tmp
weston --backend=drm-backend.so --idle-time=100 

      2. 使用 drm 和 cpu 渲染器运行 Wayland

weston --backend=drm-backend.so --idle-time=100 --use-pixman

--idle-time: weston 需要休眠多少秒,测试 Wayland 暂停和恢复很有用。
--use-pixman: 比较 gpu 或非 gpu 的性能和行为很有用。

1.2.3 Wayland性能测试

3D 性能: glmark2-es2-wayland
glmark2-es2可以从GitHub - glmark2/glmark2: glmark2 is an OpenGL 2.0 and ES 2.0 benchmark获取
OpenVG 测试: vg_api_tests
从 mali DDK 构建,使用 make bin/vg_api_tests 构建

1.3 不使用Graphics

如果您不想使用 X11 或 Wayland,有一些选择供您选择。

接口: libdrm 和 libmali-gbm 可用于在没有显示系统的情况下绘制 UI。

框架: 
QT 可以在没有 x11 或 Wayland 的情况下工作。 Qt5 应用程序可以在 EGL(libmali-gbm) 之上运行。

1.4 MALI GPU 驱动

1.4.1 架构图

RTENOTITLE

1.5 Mali构建选项

为 X11 构建:
VARIANT=mali450-gles20-eb-linux-sse-vg-x11-dma_buf

为 Wayland构建:
VARIANT=mali450-gles20-eb-vg-sse-linux-wayland-drm-dma_buf

X11 堆栈仅使用 gpu x11 后端,Wayland 使用两个 gpu 后端,drm(gbm) 和 wayland

-x11-: x11 后端
-drm-: GBM 后端
-wayland: wayland 后端
-sse-: 与霓虹灯类似,在mali 加速 memcpy,加速一些类似的 glTexSubImage2D api
-vg-: openVG 支持, 在 wayland 后端使用 vg_api_tests 测试
-dma_buf-: 支持 dma_buf

1.6 LibDRM

1.6.1 架构图

RTENOTITLE

1.6.2 源代码

主线源代码: git clone git://anongit.freedesktop.org/mesa/drm

LIBDRM 是跨驱动程序中间件,它允许用户空间应用程序(例如 Mesa 和 2D 驱动程序)通过 DRI 协议与内核通信。

1.6.3 Mailing列表

一般开发者讨论在 dri-devel@lists.freedesktop.org 邮件列表中进行。

在  dri-devel Info Page 信息页面订阅列表。

档案可在  The dri-devel Archives 找到。

2 其他

有关完整 Linux graphics 堆栈的详细信息,请参阅  FreedesktopARMArch wiki 中的在线文档......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rockchip 的相关文章

  • 如何将 X11 键符号映射到 Unicode 字符?

    X11 将键码映射到键符号 然后将键符号映射到 Unicode 在程序中检索键符号到 Unicode 映射的好方法是什么 Try this http www cl cam ac uk mgk25 ucs keysym2ucs c
  • 使用 PyCharm 在远程服务器上进行 Python 绘图

    我已经开始学习 Python 到目前为止我的设置一直遵循 在 Win10 64 位本地计算机上安装 Python 3 5 并使用 PyCharm 作为一个很棒的 IDE 一切正常 matplotlib 图表和其他可视化输出显示良好 调试工作
  • QWidget / X11:防止通过鼠标单击激活/聚焦窗口

    我想用 Qt QML 开发一个系统范围的屏幕键盘 通过 xlib 注入按键事件效果很好 我现在的问题 如果单击键盘按钮 具有所选输入字段的窗口将失去焦点 因此 按键事件将不会传递到先前选择的输入字段 那么有人知道如何防止 QWidget 被
  • 如何避免 Linux/X11 上的 pygame 撕裂

    我一直在玩 pygame 在 Debian Lenny 上 它似乎工作得很好 除了烦人的位图撕裂 全屏或窗口模式 我正在使用默认的 SDL X11 驱动程序 谷歌搜索表明 X11 不提供垂直同步功能 这是 SDL 的一个已知问题 即使使用使
  • linux Wayland 显示多用户

    我使用摇摆合成器 当我在控制台中更改用户时 我无法显示 wayland 图形界面 它与 X 应用程序一起使用 su otherUser myApplicationWayland error XDG RUNTIME DIR not set i
  • Windows 上 Git Bash 中的 X 会话?

    我在 Windows 上使用 Git Bash 我已经使用 Git Bash 通过 SSH 连接到 UNIX 机器 并尝试使用 GUI 运行程序 我收到消息 LINUX UNIX system detected but unable to
  • Ubuntu服务器上部署JavaFX不显示

    我正在 Netbeans 中的 Mac OS X 10 9 1 上使用 jdk1 7 0 51 开发 JavaFX 应用程序 我可以毫无问题地运行它 并且在干净的构建之后我还可以从 dist 文件夹启动 jar 现在我想将其部署在 64 位
  • 直接打开 Xserver 的套接字

    我希望了解 Linux 桌面环境如何与 Xserver 配合使用 我读到大多数窗口管理器不直接打开套接字 而是使用 Xlib 绑定 来编写 WM 的任何语言 或者您可以使用更高级别的绑定 XCB 但我想知道直接向 Xserver 打开套接字
  • 如何在 Linux 上用 C++ 截取被遮挡窗口的屏幕截图

    我正在尝试弄清楚如何截取当前未聚焦的窗口的屏幕截图 因此该窗口很可能会被其他窗口部分或完全遮挡 我在此链接上找到了一个示例使用 X11 的 Xcomposite 扩展获取被覆盖 不可见或最小化的窗口的屏幕截图 https stackover
  • 如何将 X11 KeySym 映射到 Unicode 字符?

    这是一个完全相同的副本这个问题 https stackoverflow com questions 1268600 how do i map an x11 keysym to a unicode character 然而 已接受答案中链接的
  • Mac X11 有 XTEST 扩展吗?

    所以我把一些 X 程序移到了 mac 上 然后我得到了 Error XTEST extension unavailable on null 来自 xdotool OS X X11 是否附带 XTEST 如果没有的话有办法添加吗 在终端中运行
  • Wayland 上的屏幕截图显示为黑色

    我找到了这个code http ted mielczarek org code screenshot 在 Ted Mielczarek 网站上截取屏幕截图 gdk screenshot cpp Save a screenshot of th
  • 如何在 Cast Receiver Player 中续订过期的 DRM 许可证?

    我基于以下内容开发自定义 Cast Receiver 应用程序Google Cast 应用程序框架 https developers google com cast docs caf receiver 接收器应用程序负责播放 Widevin
  • 使用 Ghostscript 作为 x11 查看器(gs x11 视口定位)?

    我已经知道了Ghostscript 前端 http en wikipedia org wiki Ghostscript Front ends观众 但我想知道如何gs本身可以用来查看PDF文档吗 我能得到的最接近的是明确指定x11窗口作为输出
  • 如何将 shm pixmap 与 xcb 一起使用?

    我尝试学习如何使用 xcb 库中的共享内存像素图 你们中有人有这方面的经验并想分享示例代码和 或信息吗 这会很有帮助 Thanks 经过一些研究 我发现了如何在 xcb 中使用共享内存像素图 这是我的测试代码 include
  • XLib:获取光标图像

    有没有办法使用 Xlib 检索当前光标位图 我检查过X光标人 http www xfree86 org 4 3 0 Xcursor 3 html但我没有看到任何方法可以做到这一点 使用 GetCursorImage SelectCursor
  • 如何判断全屏应用程序是否正在运行?

    python 是否可以判断 linux 上的全屏应用程序是否正在运行 我感觉使用 Xlib 可能是可行的 但我还没有找到方法 EDIT 我所说的全屏是指整个屏幕 除了应用程序之外 没有其他任何内容 例如全屏游戏 如果您有兴趣在支持下运行所有
  • Yocto“无法运行 qemu:无法初始化 SDL(x11 不 > 可用)”

    所以我在本地构建服务器上安装了 Yocto 因为谁希望大规模构建占用他们的工作区 amirite 主机和服务器是Arch Linux 4 19 44 1 lts 无论如何 我只是从找到的快速构建页面运行示例here https www yo
  • X11 等待并获取剪贴板文本

    我必须监视 X11 剪贴板 目前 我每 5 秒请求一次剪贴板选择 然后对从剪贴板返回的文本进行哈希处理 并将其与上次检查的哈希计算结果进行比较 如果哈希值不相同 我会分析文本内容并做一些事情 我不喜欢我的方法 我来自Windows 使用wi
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏

随机推荐

  • 全连接层、卷积层、深度可分离卷积的参数量计算

    一 全连接层参数的计算 若输入大小为32 32 3的图片 第一层全连接层有500个节点 则地一层全连接网络的个参数量为 32 32 3 500 500 约为150万个参数 参数量多 导致计算速度缓慢且容易造成过拟合 于是卷积操作便横空出世
  • Taro编译微信小程序实现顶部自定义导航栏

    需求 使用taro开发微信小程序的过程中 涉及到小程序的需要自定义顶部导航栏 导航栏渐变色 微信小程序中只能够设置固定的颜色 渐变颜色以及添加其他按钮的操作就不能够通过小程序自带的api来实现 思路 配置自定义导航栏设置 获取顶部状态栏高度
  • 一个进程可以创建多少线程?

    理论上 一个进程可用虚拟空间是2G 默认情况下 线程的栈的大小是1MB 所以理论上一个进程可以创建2048个线程 当然更改编译器的设置可以创建多余2048个线程 因此 一个进程可以创建的线程数由可用虚拟空间和线程的栈的大小共同决定 只要虚拟
  • PTA Python习题 计算工资

    题目要求 编写函数pay 带两个输入参数 小时工资和上周员工工作了的小时数 函数计算并返回员工的工资 加班工资的计算方法如下 大于40小时但小于或等于60小时按平时小时薪酬的1 5倍给薪 大于60小时则按平时小时薪酬的2倍给薪 函数接口定义
  • 【恒指早盘分析】期货交易绝非你想的那么简单

    对期货而言 这个市场是绝对平等的 它不需要八面玲珑的关系 不靠权势 只凭借勤奋努力来实现梦想 实现真正的财务自由 因此 对每一位立志于靠智慧生活的人来说 期货投资是一个极好的发展领域 从平时的练习和实践中 可以得到身 心 技的全面塑造和修行
  • Google Mock - GoogleTest(九)

    本文翻译自 https github com google googletest blob master googlemock docs CheatSheet md 一 定义一个模拟类 1 模拟一个正常的类 就是接口类 给 1 2 3 4
  • 数字经济时代下的软硬件基础设施建设与发展

    随着全球数字化新时代的到来 软件正在被重新定义 程序员的世界的代码走向各行各业 智慧城市 载人航天 潜海探月 数字新时代的加快到来 也为开发者拥有无限想象力提供了新机遇 一 云计算 云计算 大数据和人工智能 这三个东西已非常火 并且它们之间
  • 【C++初阶】list的模拟实现 附源码

    一 list介绍 list底层是一个双向带头循环链表 这个我们以前用C语言模拟实现过 gt 双向带头循环链表 下面是list的文档介绍 list文档介绍 我们会根据 list 的文档来模拟实现 list 的增删查改及其它接口 二 list模
  • 【深入理解C++】三种继承方式、函数遮蔽

    文章目录 1 三种继承方式 2 函数遮蔽 1 三种继承方式 继承可以让子类拥有父类的所有成员 成员变量和成员函数 public继承 父类 继承方式 子类 public public public protected public prote
  • Ideal必备宝藏插件

    Ideal必备宝藏插件 1 CodeGlance 代码迷你缩放图插件 方便拉到对应的代码 2 Codota代码提示工具 3 Alibaba Java Coding Guidelines 阿里巴巴的编码规约检查插件 4 Lombok 实体类插
  • UmiJS学习

    UmiJS4学习笔记 起步 官网学习 https umijs org 开发环境 Umi js 需要使用 Node js来进行开发 因此请先确保电脑已经安装了 Node js 且版本在 14 以上 安装pnpm npm install pnp
  • mysql Using where; Using join buffer (Block Nested Loop)

    SELECT FROM t1 INNER JOIN t2 ON t1 id t2 CODE sql执行很慢 explain 发现Using join buffer Block Nested Loop 产生的原因有可能是 JOIN 的字段类型
  • JavaScript-MD5加密

    代码 或者 示例 var hash md5 value 2063c1608d6e0baf80249c42e2be5804 var hash md5 111111 96e79218965eb72c92a54
  • 精通CSS-添加样式

    精通CSS 添加样式 一 CSS 选择符 1 子选择符与同辈选择符 2 通用选择符 3 属性选择符 4 伪元素 5 伪类 6 结构化伪类 7 表单伪类 二 层叠 三 特殊性 1 利用层叠次序 四 继承 五 为文档应用样式 1 link 与
  • macOS下更改默认的Python版本

    本机环境 macOS11 6 macOS默认已经安装了python 只不过版本是Python2 7 其相比Python 3缺少了很多特性 而且速度也比Python 3慢 因此建议大家安装Python 3 python download 这里
  • 国内镜像下载Android10源码并编译(实测)

    1 安装ubuntu 不会的百度 一大把 2 安装编译环境必要软件 sudo apt get install git core gnupg flex bison build essential zip curl zlib1g dev gcc
  • unity 中带贴图以及动画的模型文件转为 lowpoly 风格的方法

    本篇讲述的是使用代码来修改的方法 其实unity已经给我们提供了设置的方法 Normals选择Calculate Smoothing Angle调整为0即可 这里的内容是在这篇文章的基础上进行的修改 https blog csdn net
  • winget安装提示:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd

    问题 当我们使用 Winget 包管理器安装软件时总是提示以下错误 执行此命令时发生意外错误 InternetOpenUrl failed 0x80072efd unknown error 解决方法 DNS是一种将网址转化为IP地址的重要工
  • 蓝桥杯C/C++ 基础练习 矩阵乘法 C语言

    题目 思路分析 题目要求输入N阶矩阵 可以动态定义二维数组A N N 来存储该矩阵A 由于矩阵A的M次幂也是N阶矩阵 那么需要定义另一个数组B N N 来存储该矩阵 在继续分析之前需要明确矩阵的乘法规则 举例如下图图1 不清楚者可自行百度
  • Rockchip

    1 Graphics介绍 1 1 使用X11 Graphics Xserver 是在常规桌面 Linux 平台上使用的显示系统 Rockchip 有一个定制的 Xserver 可以实现 glamor 2D acceleration Xser