Graphics
文章平均质量分 78
tech-share
持续分享关于AI,GPU,Linux开发,操作系统,图形学,高性能计算,编译器及芯片行业讯息。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存控制器(memory controller)架构及其工作原理
总而言之,内存控制器是一个复杂的协调器,它弥合了 CPU 对数据的无尽需求与 DRAM 复杂且受物理规律支配的行为之间的鸿沟,将简单的读/写命令转化为高度优化的电信号交响乐,使您的系统能以最高效率运行。地址解码器将物理地址转换为 (通道) -> (DIMM) -> (Rank) -> (Bank) -> (Row) -> (Column)。· 兼容性: 它确保 CPU 能与行业标准的 JEDEC 内存协同工作,并能执行内存训练(在启动时校准时序)以确保稳定性,尤其是对于超频(XMP/EXPO)内存。原创 2025-12-14 13:08:49 · 687 阅读 · 0 评论 -
AMDGPU backend架构及ISA指令使用
GPU CDNA硬件架构:本文将详细解释 AMD GPU ISA 如何映射到物理硬件,并展示指令是如何执行的。计算单元 (CU) 层次结构执行模型:波前 (Wavefront)· 波前大小: 32 或 64 个线程(RDNA为32/64,GCN为64)· SIMD宽度: 32个ALU通道· 调度粒度: 每个周期调度1个波前到SIMD单元寄存器映射assembly。原创 2025-12-09 18:00:24 · 607 阅读 · 0 评论 -
PCIe信号链路架构及其Linux kernel系统软件完全开发指南
一、PICe总线系统架构总线矩阵架构详解A. CPU ↔ 内存通路· 路径: CPU核心 → L3缓存 → 集成内存控制器(IMC) → 内存控制器 → DRAM· 特点: 这是系统最高带宽的路径,通常通过多通道DDR接口B. PCIe设备 ↔ 内存通路 (DMA/数据传输)data path:EP → PCIe Switch → RC内部交换矩阵 → IMC → 内存控制器 → DRAM· DMA写操作: EP DMA引擎生成Memory Write TLP,数据直接写入系统内存。原创 2025-12-06 16:53:48 · 629 阅读 · 0 评论 -
AMDGPU MI300架构及各子系统工作原理 (一)
3-2 性能优化方法 优化手段围绕硬件特性适配、软件工具调优和模型架构适配展开,具体如下: 1. 硬件分区与资源本地化:借助MI300支持的计算和内存分区模式优化,比如启用NPS 4模式可本地化内存访问,能让流基准测试的带宽提升5%-10%;其能就近响应XCD的高频数据请求,减少对HBM3的直接访问,在降低功耗的同时,进一步提升数据读取效率,适配AI训练中高频重复的数据调用场景。请关注微信公众号:颇锐克科技共享*********************一、MI300架构图。原创 2025-11-27 14:29:13 · 408 阅读 · 0 评论 -
DRM Syncobj 工作原理及使用代码实现
struct drm_syncobj_wait wait_args = { .num_fences = 1, .flags = 0, // 0 表示等待所有满足,DRM_SYNCOBJ_WAIT_ANY 表示任意一个 .timeout_ns = 0, // 无限等待(可设为 5e9 表示 5 秒超时) .handles = handles, .seqs = seqs, .result = result };原创 2025-11-25 18:08:37 · 434 阅读 · 0 评论 -
Linux DRM图形子系统同步机制之dma_resv
当多个进程(或事务)需要同时锁定一组缓冲区,但请求锁的顺序可能形成循环等待时(例如进程A锁了缓冲区1想锁缓冲区2,进程B锁了缓冲区2想锁缓冲区1), ww_mutex 会根据事务的“年龄”(启动顺序)决定回滚(wound)较年轻的事务,让其释放已获得的锁,从而打破死锁局面,让较年长的事务先完成。在获取锁的过程中如果发生冲突,会根据事务的先后顺序(年龄)来解决:较年轻的事务(后发起者)会回退(释放已获得的锁)并等待,让较年长的事务(先发起者)先完成,从而避免死锁。// 共享(读)操作的围栏列表。原创 2025-11-24 19:12:10 · 640 阅读 · 0 评论 -
如何基于ROCm本地部署开源模型Gemma3
from transformers import AutoTokenizer, AutoModelForCausalLMtokenizer = AutoTokenizer.from_pretrained(“google/gemma-3-4b”)model = AutoModelForCausalLM.from_pretrained(“google/gemma-3-4b”, device_map=“auto”)# 测试推理inputs = tokenizer(“Hello, Gemma 3!原创 2025-11-24 09:05:57 · 780 阅读 · 0 评论 -
数据中心GPU之间交互工作原理
核心结论数据中心 GPU 交互本质是 “高速互联 + 统一调度 + 数据共享”,通过硬件链路搭建通信通道,结合软件协议与调度框架,实现多 GPU 协同完成大规模计算任务。2. 软件协议与框架(逻辑支撑)底层通信协议:基于 GPU 厂商接口(如 NVIDIA CUDA、AMD HIP)实现基础通信,通过 CUDA-aware MPI(消息传递接口)、NCCL(NVIDIA 集体通信库)等标准化协议,支持多 GPU 数据交换与集体通信(如广播、归约操作)。原创 2025-11-23 22:47:11 · 225 阅读 · 0 评论 -
显示系统HWUI与SurfaceFlinger 交互机理以及关键代码分析
}} (3)提交软件绘制结果 cpp // Surface.cpp:软件绘制后的 Buffer 提交status_t Surface::unlockAndPostSoftwareBuffer(SkBitmap* bitmap) { // 1. 将 Skia 绘制后的像素数据拷贝到 Surface 的 Buffer memcpy(mCurrentBuffer->bits(), bitmap->getPixels(), bitmap->computeByteSize());原创 2025-11-22 21:23:37 · 572 阅读 · 0 评论 -
android 中Bn 和Bp的区别
最近在研究surfaceflinger,真心被里面的类名折腾惨了。 Bn n 就是native,这是一个怎样的类? 我们继承它的原因是为了实现一个接口,具体点说就是一个BnXXX对应一个IXXX。比如BnSurfaceComposer 对应 ISurfaceComposer I 其实就是interface(接口)的意思。 class SurfaceFl转载 2015-10-16 13:57:43 · 980 阅读 · 0 评论 -
Android Graphics Pipeline: From Button to Framebuffer (Part 1)
In this mini-series of blog articles we want to shed some light on the internals of the Android Graphics Pipeline. Google itself already released some insights and documentation on the subject such as转载 2015-11-04 20:14:05 · 1379 阅读 · 0 评论 -
hwcomposer __hwc_layer_1
compositionType is used to specifythis layer's type and is set by eitherthe hardware composerimplementation, or by the caller (see below).合成类型用来确定layer的类型,在(*prepare)()调用前,需要复位HWC_BACK原创 2015-11-06 20:28:04 · 2752 阅读 · 0 评论 -
hwc_procs_t,hwc_display_contents_1_t 理解
typedef void*hwc_display_t;//代表一个显示,尤其是EGLDisplay对象,typedef void*hwc_surface_t;//代表一个surface,典型是一个EGLSurface对象* hwc_display_contents_1_t::flagsvalues*/enum {/** HWC_GEOMETRY_CHANGED is原创 2015-11-07 21:45:16 · 1304 阅读 · 0 评论 -
Android Graphics Pipeline: From Button to Framebuffer (Part 2)
Android Graphics Pipeline: From Button to Framebuffer (Part 2)Gepostet am 30. März 2015 |Mathias Garbe Last time, we took a thorough look at how Android converts the Java-SideonDraw() me转载 2015-11-06 20:33:04 · 1158 阅读 · 0 评论 -
[译]Android图形系统 II 图形架构
首 页阅览室馆友我的图书馆登录注册[译]Android图形系统 II 图形架构 收藏人:老匹夫 2015-06-30 | 阅: 转:转载 2015-11-09 09:44:22 · 2423 阅读 · 1 评论 -
hwc virtual display
buffer_handle_t outbuf; //outbuf是一个为虚拟显示接收合成图像的buffer,在向outbuf写东西的时候,必须等到outbufAcquireFenceFd信号。一个fence会发出信号当向outbuf写操作完成的时候,retireFenceFd有返回值。此部分是在prepare()前设置,因此此buffer的属性可以用来确定哪一个layers可以被h/wco原创 2015-11-09 10:16:07 · 1769 阅读 · 0 评论 -
hwc_composer_device_1
hwc_composer_device_1struct hw_device_t common; //hardware composer device通用方法,其必须为hwc_composer_device_1的第一个成员,用此结构体的使用者需要将hw_device_t投射到上下文的hwc_composer_device_1指针。int (*prepare)(structhwc_co原创 2015-11-09 19:32:16 · 1566 阅读 · 0 评论 -
Android - Binder机制
Android - Binder机制 学习要点 :1. Android - Binder机制 - ServiceManager2. Android - Binder机制 - 普通service注册3. Android - Binder机制 - 获得普通service4. Android - Binder机制 - client和普通service交互5. Android - B原创 2015-10-11 15:28:12 · 468 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2015-10-12 08:58:45 · 577 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件容易的事。既然不能从正面分析,我们就想办法从侧面分析。说到底,无论SurfaceFlinger服务有多复杂,它都是为Android应用程序服务的,因此,我们就从Android应用程序与SurfaceFlinger服务的关系入手,来概述和制定SurfaceFlinger服务的学习计划。转载 2015-10-12 14:59:03 · 561 阅读 · 0 评论 -
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。转载 2015-10-12 15:02:22 · 1087 阅读 · 0 评论 -
Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
前面我们已经学习过Android应用程序与SurfaceFlinger服务的连接过程了。连接上SurfaceFlinger服务之后,Android应用程序就可以请求SurfaceFlinger服务创建Surface。而当有了Surface后,Android应用程序就可以用来渲染自己的UI了。在本文中,我们将详细分析Android应用程序请求SurfaceFlinger服务创建Surface的过程。转载 2015-10-13 14:56:29 · 705 阅读 · 0 评论 -
GUI显示系统之SurfaceFlinger
转载自http://blog.youkuaiyun.com/uiop78uiop78/article/details/8954508介绍了Surface, SurfaceTexture, BufferQueue, VSYNC generation, Render等内容。后面的几篇博文中我将按照如下的顺序贴出各小节内容。文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对转载 2015-10-14 21:47:38 · 3221 阅读 · 0 评论 -
android hwcomposer
以pandaboard为例。 linaro1304 release中使用HWC_FRAMEBUFFER, HWC_OVERLAY, 没有使用HWC_FRAMEBUFFER_TARGET. use_sgx = 1. egl_swapbuffer用于在commit的时候将bufer swap到sgx。 egl用于composition. hwc fb_dev的post2将sgx递交显示。com转载 2015-10-14 21:40:57 · 1447 阅读 · 0 评论 -
通过Android trace文件分析死锁ANR
对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件转载 2015-11-21 16:00:31 · 1593 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
原文地址:http://blog.youkuaiyun.com/jinzhuojun/article/details/17427491 本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的转载 2015-10-16 09:56:44 · 554 阅读 · 0 评论 -
高效获得Linux函数调用栈/backtrace的方法
trace,除了函数名,还能获得代码行号方法4 libunwind这里面的方法2和方法4都尝试过,方法2的backtrace函数是通过读取操作系统的一个全局信息区,在多线程并发调用时,会造成严重的锁冲突。方法4的libunwind也存在开销较大的问题。最终采用了下面的方案:[cpp] view plaincopyprint?#define STACK转载 2015-11-21 15:56:13 · 1772 阅读 · 0 评论 -
GUI显示系统之 SurfaceFlinger
转载自http://blog.youkuaiyun.com/uiop78uiop78/article/details/8954508介绍了Surface, SurfaceTexture, BufferQueue, VSYNC generation, Render等内容。后面的几篇博文中我将按照如下的顺序贴出各小节内容。文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对转载 2015-10-30 14:27:27 · 1358 阅读 · 0 评论 -
abdroid hwui
Android 4.4 Graphic系统详解(4)HWUI概述2015-01-28 17:48 2360人阅读 评论(0)收藏 举报分类: android graphic(7) 目录(?)[+]1 概述Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特转载 2015-12-09 21:10:36 · 1202 阅读 · 0 评论 -
android binder机制
1.binder通信概述 binder通信是一种client-server的通信结构, 1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用; 2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的; 3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Pa转载 2015-11-17 16:30:39 · 258 阅读 · 0 评论 -
native parcel的分析
Parcel是android中不同于Java Serialize新的序列化机制。Java Serialize机制作用是能将数据对象存入字节流中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。而android系统定位内存受限设备,对性能要求更高,而且系统中采用了binder ipc机制,就需要求性能更出色的对象传输方式。Parcel定位就是轻量级高效的转载 2015-11-17 16:39:50 · 1231 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
转载 2015-11-18 09:41:27 · 432 阅读 · 0 评论 -
Choregographer工作原理分析
结论写在前面:Choreographer就是一个消息处理器,根据vsync 信号 来计算frame,而计算frame的方式就是处理三种回调,包括事件回调、动画回调、绘制回调。这三种事件在消息输入、加入动画、准备绘图layout 等动作时均会发给Choreographer。下面来看分析过程看过一些源码后,发现ui 绘制的管理,调度都是通过Choreographer这个类。1 Chor转载 2015-11-18 13:33:10 · 998 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的身影。光是本文涉及的Graphics子系统中,就用到了如Observer, Proxy, Singleton, Command, D转载 2015-11-18 09:38:15 · 553 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2015-11-18 09:44:15 · 455 阅读 · 0 评论 -
SurfaceTexture
[首页][新闻][文章][登录] [注册] 首页Web开发Windows开发编程语言数据库技术移动平台系统服务微信布布扣其他数据分析 首页> 移动平台 > 详细 Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceVi转载 2015-11-18 16:59:32 · 6906 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
Android4.4 GUI系统框架之SurfaceFlinger一. Android GUI框架:SurfaceFlinger:每当用户程序刷新UI的时候,会中介BufferQueue申请一个buffer(dequeueBuffer),然后把UI的信息填入,丢给SurfaceFlinger,SurfaceFlinger通过计算多重计算合成visibleRegi转载 2015-11-26 09:02:52 · 1104 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史转载 2015-11-26 09:04:42 · 1411 阅读 · 0 评论 -
Android中ActivityManagerService与应用程序(客户端)通信模型分析
本文原创 ,转载必须注明出处 :http://blog.youkuaiyun.com/qinjuning 今天主要分析下ActivityManagerService(服务端) 与应用程序(客户端)之间的通信模型,在介绍这个通信模型的基础上,再 简单介绍实现这个模型所需要数据类型。 本文所介绍内容基于android2.2版本。由于an转载 2015-11-28 13:29:41 · 582 阅读 · 0 评论 -
高通平台 graphics图形架构
Android display system introduce(Qualcomm 8x60 platform)(二、SW架构--1)2010-12-31 11:17一、Overview 上图的原型取自高通的文档,由于原图无法描述现有的架构,我在原图的基础了做了些修改,主要是增加了overlay部分,另外其他部分根据现有的软件也做了些许改动。下面先对上图做个大概的介绍,后面会转载 2015-12-17 09:06:16 · 3027 阅读 · 0 评论
分享