- 博客(107)
- 资源 (8)
- 收藏
- 关注
原创 显示接口-DP
AUX - CH具有半双工、双向的物理层。接收设备可以切换HPD信号,提示源设备发起一个AUX请求事务来读取DPCD链路/接收状态寄存器位,包括IRQ_HPD矢量寄存器位。AUX - CH由一个交流耦合的双端差分对组成。主链路是一个单向、高带宽、低延迟的通道,用于传输同步数据流,如未压缩的视频和音频。AUX CH在支持的最长15米或更长电缆长度上提供1Mbps的数据速率。AUX - CH是一种半双工、双向通道,用于链路管理和设备控制。主链路由一个、两个或四个交流耦合的双端差分对(称为通道)组成。
2024-12-10 20:04:50
581
原创 显示接口-HDMI
Hsync/ Vsync / CTL0/1/2/3(D[1:0]) 输入控制数据,包括preamble以及hsyn/vsync等 2bit/10bit转换。Data island / Auxiliary Data(D[3:0]) 输入音频数据、source/sink交互数据等,4bit/10bit转换。BCH block0/1/2/3 组成Packet Body,每个block 8个字节,前7个字节用作SubPacket(简称SB),最后一个字节用作校验。
2024-11-25 19:47:09
1510
原创 显示接口-VGA
VGA 接口引脚图和各引脚定义表格:VGA 接口共有 15 个引脚,分为 3 排,每排各 5 个, 按照自上而下、从左向右的顺序排列。其中第一排的引脚 1 、 2 、 3 和第三排的引脚 13 、 14 最为重要。引脚 1 红基色 (RED) 、引脚 2 绿基色 (GREEN) 、引脚 3 蓝基色 (BLUE) 就是 VGA 接口中负责传输三原色的传输通道。要注意的是,这 3 个引脚传输的是模拟信号。
2024-11-13 11:32:39
4654
原创 QEMU监视器的使用
在相同的终端中直接与监视器交互。-nographic和 -monitor stdio:在命令行界面直接运行。使用 telnet 或 TCP 监视器:通过网络连接到监视器。使用 VNC 监视器:通过图形界面进行管理。
2024-10-25 15:34:57
821
原创 build bootable grub iso image && hard disk
1. 安装grub-install grub-mkrescue命令。
2024-10-24 17:27:13
300
2
转载 Texture tiling and swizzling
That’s one of the reasons why GPUs tend to prefer tiled or swizzled texture formats, which depart from the purely linear memory layout to something a tad more involved. The specifics heavily depend on the internals of the memory subsystem, but while the re
2023-02-24 20:25:31
449
转载 GPU 与 CPU 的数据交互
将主存的空间映射到 GPU 的地址空间。这部分空间用 于 GPU 和 CPU 传输数据例如顶点数据索引数据用, 同时命令的传输也需要使用。 相比于 VRAM,显卡对 VRAM 的读写速度将远快于在内存中速写速度,因此 VRAM 中一般存储着经常需要访问的数据。当 VRAM 空间用完后,数据也需要 放在系统内存中。系统为 GPU 分配的内存成为 GTT(graphics translation table), 这部分内存是按需分配的, 因为一次分配大量的内存是不可能成功而且也是一种 浪费。这样就造成 GTT
2023-02-18 13:54:03
4670
2
转载 初识设备树
目录:一、加载Linux(有无设备树)二、设备树入门知识一、加载Linux(有无设备树)没有设备树的时候(以ARM架构为例):- 内核在源码里记录了所有硬件相关的信息(芯片型号、内存大小,各种控制器和外设等);- booloader只需要加载一个kernel image(例如uImage、zImage等),然后跳转到kernel image的起始地址就可以开始执行内核代码了。- bootloader在加载kernel image前,会先准备好一些供内核使用的信息,这些信息被称
2022-05-25 10:30:52
931
1
原创 【架构分析】MESA (EGL/GLES)架构分析
【架构分析】MESA (EGL/GLES)架构分析_HaoBBNuanMM的博客-优快云博客_egl mesa
2022-05-07 16:07:12
1087
原创 drm相关博客~~~~
我的标签 - -Yaong- - 博客园标签 - crab2313's blog共计 21 个标签kernel22drm9risc-v4driver3gnome3mutter3algorithm2mesa2arm1binary1clutter1egl1eventfd1filesystem1iommu1isa1kdump1net1network1pci1usb1...
2022-04-23 11:54:05
684
转载 display: mesa: eglapi接口:getdisplay&initialize
SPEC:https://www.khronos.org/registry/EGL/specs/eglspec.1.5.pdfhttps://www.khronos.org/registry/EGL/specs/eglspec.1.5.pdf一共45条:eglGetDisplay/*** This is typically the first EGL function that an application calls.* It associates a private _EGLDisp..
2022-04-23 11:51:20
1018
转载 display:weston:weston-simple-egl
写在前面:客户端渲染在Wayland架构中,客户端UI的所有呈现均由客户端代码执行,通常由客户端使用的图形工具包执行。图形工具箱可以使用其希望呈现UI元素的任何方法:在CPU上进行软件呈现,使用GLES进行硬件呈现。 Wayland所需要做的就是将客户端渲染的每一帧和窗口的结果像素发送到合成器。 像素数据可能以几种方式传输,具体取决于渲染方式以及客户端和合成器相互支持的内容: 包含实际像素数据的共享内存缓冲区。 如果没有其他机制,则支持这些备用机制。 GPU缓冲区共享(DRM...
2022-04-12 21:11:19
1544
转载 探索发现:DRM + OpenGLES + GBM + EGL简单介绍
一、认识它们见:4个库总介绍: https://www.cnblogs.com/lenomirei/p/11379535.html ;OpenGLES + EGL: https://blog.youkuaiyun.com/qiuyun0214/article/details/54614997 ;EGL: https://www.khronos.org/registry/EGL/sdk/docs/man/html/indexflat.php ;GBM : https://www.sevirt.com/index
2022-04-11 14:12:40
2250
转载 Wayland中的跨进程过程调用浅析
Wayland协议主要提供了Client端应用与Server端Compositor的通信机制,Weston是Server端Compositor的一个参考实现。Wayland协议中最基础的是提供了一种面向对象的跨进程过程调用的功能,在作用上类似于Android中的Binder。与Binder不同的是,在Wayland中Client和Server底层通过domain socket进行连接。和Binder一样,domain socket支持在进程间传递fd,这为传递graphic buffer和shared me
2022-04-11 14:05:11
1192
转载 wayland 协议的实现
如何扩展 wayland 协议为了能够扩展 wayland 协议,首先需要理解 wayland 协议,并且知道怎么样在server和client端实现协议中定义的接口。看了一堆文档,试着按照自己的理解来整理文档,并动手写简单的代码来加深理解。【希望一个月之后再读这篇文章不会觉得是一坨shit】wayland 协议是什么wayland核心协议是一个 xml 文件,如果我们安装了 wayland 开发包,这个文件在一般在系统的 /usr/share/wayland/wayland.xml。核心协议的
2022-04-08 18:40:43
2142
转载 Linux图形显示系统之DRM
一、OverviewDirect Rendering Manager(DRM)是linux内核子系统,负责与显卡交互。 DRM提供一组API,用户空间程序可以使用该API将命令和数据发送到GPU并执行诸如配置显示器的模式设置之类的操作。DRM最初是作为X server Direct Rendering基础结构的内核空间组件开发的,但从那以后它被其他图形系统(例如Wayland)所使用。用户空间程序可以使用DRM API命令GPU执行硬件加速的3D渲染和视频解码以及GPU计算。Linux内核已经有一个
2022-04-07 18:17:01
3074
转载 Wayland与Weston简介
简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland compositor的参考实现。其官网为http://wayland.freedesktop.org/。它们定位于在Linux上替换X图形系统。X图形系统经历了30年左右的发展,其设计在今天看来已略显陈旧。在X系统中,X Server作为中心服务,连接clien和硬件以及compositor。但时至今日,原本在X Server中做的事很多已被移到ker
2022-04-01 14:26:11
2298
转载 mesa3d源代码阅读笔记
最近准备去阅读Mesa3d(采用7.6.1版本)的源代码,代码量很大,感觉到十分困难。以后是否能够读下去,并且理解它的整个实现过程,不能确定。但既然阅读了,就应该积累起来,特写下本系列笔记。1 编译Mesa3d 7.6.1是很容易的事情,里边包含有VC8的sln解决方案,打开它直接编译即可完成;2 如何调试编译出来的opengl32.dll文件呢?其实Windows系统在检索exe所需要的dll文件时,第一顺序是在当前exe文件所在的目录,所以只要保证编译出的opengl32.dll与调试用的exe
2022-03-26 20:26:20
3763
转载 如何实现一个OpenGL库?
一直很好奇OpenGL是如何实现,如何与显卡硬件交互的,下边这个知乎上的问答基本上回答了这个疑问,总结起来如下:(1)OpenGL是一个规范,规定了一系列特定接口(2)接口实现,可以通过操作cpu实现(软实现),也可以通过操作GPU实现(3)操作GPU的实现方式一般都是各GPU厂商实现,且非公开的(4)Opengl的开源实现mesa我是说,在硬件基础上(比如NV的某款显卡)实现某个版本的OpenGL?大致流程是什么?需要身条件?关注者136被浏览34,716关注问..
2022-03-17 16:16:46
1140
转载 Linux 图形栈一览:基于 DRM 和 Wayland
Chen Jie创作于 2019/11/13by Chen Jie ofTinyLab.org2019/10/07本文图示了基于 DRM 还有 Wayland 的 Linux 图形栈。在这个图形栈中,App 将画好的 surface,通过 Wayland 协议提交给 Compositor。Compositor 将来自各个应用的 surface(s) 合成为一帧,通过 DRM 接口最终画在FrameBuffer,如下图所示:图 1:Linux 图形栈概览:Wayland 协议, ...
2022-03-16 19:48:21
2341
转载 RK3399 探索之旅 / Display 子系统 / 基础概念
Linux 下的许多驱动框架其实都挺复杂,大多都是许多国内外的牛人经过多年的完善而积累下来的代码。学习驱动开发需要找准自己的定位,先全局把握再适当地去填充细节,不要总想着深入到驱动框架里,站在一个使用者的角度去思考如何应用这些驱动框架或许会有更好的效果。这里我是以一个菜鸟的身份记录下自己的一些想法和学习心得,欢迎纠正我。一、基础概念1. Linux 的 2 种显示方案包括: FBDEV: Framebuffer Device DRM/KMS: Direct Renderi
2022-03-07 10:24:19
2350
原创 DRM框架(vkms)分析(9)----drm驱动创建fbdevice分析(以rockchip_drm_drv为例)
本文主要介绍DRM框架里的fbdev兼容逻辑一 framebuffer框架简单介绍framebuffer框架下fbdev的注册主要三步步:(1)创建fbdev操作函数,以rockchip为例:static const struct fb_ops rockchip_drm_fbdev_ops = { .owner = THIS_MODULE, DRM_FB_HELPER_DEFAULT_OPS, .fb_mmap = rockchip_fbdev_mmap, .fb_fillrec
2022-02-28 02:04:08
5079
1
原创 DRM框架(vkms)分析(6)---- plane初始化
一drm_plane结构体struct drm_plane { struct drm_device *dev; //挂载到&drm_mode_config.plane_list struct list_head head; char *name; struct drm_modeset_lock mutex; //表示plane的mode对象, 其包含了plane的各种属性 struct drm_mode_object base; /** * @possibl.
2022-02-25 18:45:17
5314
转载 linux GPU上多个buffer间的同步之ww_mutex、dma_fence的使用 笔记
WW-Mutexes在GPU中一次Render可能会涉及到对多个buffer的引用。所以在command buffer提交到GPU前,需要等到所有依赖的buffer可用。因为这些buffer可能被多个设备或进程所共享,所以相比单个buffer,增加了deadlock的风险。这不能简单地通过一个 buffer mutex锁来等待buffer可用,因为这些buffer通常受控于应用程序.比如Vertex shader中用到的vertex data: input attributes bu
2022-02-25 17:38:21
2001
原创 DRM框架(vkms)分析(5)----crtc初始化
drm_crtc结构体类型如下:/** * struct drm_crtc - central CRTC control structure * * Each CRTC may have one or more connectors associated with it. This structure * allows the CRTC to be controlled. */struct drm_crtc { /*挂载到&drm_mode_config.crtc_list*/
2022-02-20 21:59:19
4794
原创 DRM框架(vkms)分析(4)----encoder初始化
本文主要分析encoder的初始化和配置,drm_encoder结构体如下:/** * struct drm_encoder - central DRM encoder structure * @dev: parent DRM device * @head: list management * @base: base KMS object * @name: human readable name, can be overwritten by the driver * @funcs: c
2022-01-26 18:50:34
3478
原创 DRM框架(vkms)分析(3)----connector->func && connector->helper_private的使用
一 connector->funcdrm_connector_funcs类型的对象实例,其中有些对象实例可直接使用helper函数,有些可以自定义,还有一些可以忽略掉不赋值的/** * struct drm_connector_funcs - control connectors on a given device * * Each CRTC may have one or more connectors attached to it. The functions * below.
2022-01-21 18:23:24
2757
1
原创 DRM框架(vkms)分析(2)----connector初始化
本文主要分析connector的初始化和配置,drm_connector结构体如下:/** * struct drm_connector - central DRM connector control structure * * Each connector may be connected to one or more CRTCs, or may be clonable by * another connector if they can share a CRTC. Each connec
2022-01-19 21:07:01
6005
原创 DRM框架(vkms)分析(1)----概述
本系列主要基于vkms测试程序,libdrm,以及vkms驱动来分析DRM框架,主要包括kms+gem。其中,(1)vkms测试程序主要参考如下三篇博客:最简单的DRM应用程序 (single-buffer)_hexiaolong2009的专栏-优快云博客_drm应用DRM应用程序进阶 (atomic-crtc)_hexiaolong2009的专栏-优快云博客_libdrm应用程序DRM应用程序进阶 (atomic-plane)_hexiaolong2009的专栏-优快云博客(
2022-01-17 19:47:16
3411
原创 最新版本libdrm(2.4.109)编译
drm的atomic操作在老版本的libdrm中没有支持,需要下载最新的libdrm,我这里下载的是libdrm-2.4.109版本下载链接:https://dri.freedesktop.org/libdrm/新版本的libdrm不再采用configure && make的方式编译,而是改用meson && ninja编译方式。meson 与ninja的安装如下:sudo apt-get install python3 python3-pip ninja-
2022-01-17 15:23:08
6609
1
转载 dma-fence
dma-fence本身的实现和使用并不复杂,其只有两种状态signaled和unsigned。可能正是因为其本身的精简,在融入其他概念中时,在不同的环境下,赋予了dma-fence不同的含义。所以通常需要根据dma-fence的具体使用的情况来理解其含义。dma-fence是内核中的同步原语,本身只能表示两种状态,这点上就和complete有点类似了。但是dma-fence是可以跨设备,跨进程的。具体来说:1.就是A设备驱动程序中创建的dma-fence可以被B驱动程序使用。2.dm
2022-01-14 17:54:19
2351
原创 DRM框架梳理-- dumb-buffer的分配和绑定到crtc
用户态程序参考代码:最简单的DRM应用程序 (single-buffer)_hexiaolong2009的专栏-优快云博客_drm应用modeset-single-buffer.c驱动参考代码:DRM 驱动程序开发(VKMS)_hexiaolong2009的专栏-优快云博客_drm_driver本文主要通过用户态的调用流程跟踪内核vkms驱动的调用逻辑:(1) drmModeGetResourcesdrm_ioctl_*控制宏定义在文件:drivers/gpu/drm/d
2022-01-05 23:07:07
2666
原创 ftrace之function及function_graph使用
一 用途(1)function 主要用于跟踪内核函数的调用栈(2)function_graph 永固跟踪内核函数
2022-01-04 20:00:10
5192
2
转载 perf-tools
perf-tools简介一个开发中的Linux性能测试使用的工具,能够收集ftrace和perf_events中乱七八糟的参数。ftrace和perf都是Linux中的内核跟踪工具,包含在Kernel中。ftrace在多数系统中已经存在,但perf可能需要添加额外的软件包。这些工具设计的很容易安装(较少的依赖),能提供详细直观的性能参数,并且操作简单。本教程由Brendan Gregg (DTraceToolkit的作者)创建。这些工具以服务的方式运行在内核中,因此多数工具都有说明手册(man帮助手
2021-12-15 20:53:24
1586
libdrm-2.4.60.tar.bz2
2021-09-03
gray_courier_new.xml
2021-04-28
XML/YML的读写代码源程序VS2010+opencv2.3.0
2014-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人