11 何小龙

紫光展锐 - 高级软件工程师

我要认证

email: 343005384@qq.com

等级
TA的排名 2w+

翻译:Mainline Explicit Fencing

本文翻译自 Gustavo Padovan 于 2016 年 9 月发表在 Collabora 官网的三篇文章,Gustavo 本人也是内核中 dma-fence 的提交作者。通过本文,我们可以了解到 dma-fence 最初是如何演变而来的,以及它是如何在 graphics pipeline 中起作用的。

2020-07-05 14:49:47

翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书

译者注以下为正文。介绍多年来,显示行业一直普遍认为显示器是以固定的刷新率(refresh rate)运行的,如 60Hz。这与以下事实形成鲜明对比:送给显示器的图像内容多种多样,每种图像都有自己独特的、变化的帧率(frame rate)。当显示的刷新率与图像内容自身的帧率不同步时,用户可能会察觉到撕裂(tearing)和卡顿(stutter)之类的异常效果。在移动应用程序中(如平板、笔记本电脑),对于静态图像和视频播放来说,较高的显示刷新率不仅显得多余,还增加了系统功耗,降低了续航能力。这些因素使得我

2020-07-01 21:37:59

LWN 翻译:DMA-BUF cache handling: Off the DMA API map (part 2)

在上一篇文章中,我绍了一些关于 ION、DMA-BUF Heap、DMA API 的背景知识,以及 CPU Cache “所有权”的基本概念,最后站在传统 DMA API 的角度来描述 DMA-BUF 是如何处理 cache 同步问题的。文章最后还讨论了为什么传统的 DMA API 在现代移动平台上性能会这么差。本文将和大家一起探讨如何让 DMA-BUF exporter 避免不必要的 cache 操作的方法,并就如何改进这些方法提出了一些大致的建议。

2020-06-21 19:42:43

DRM GEM 驱动程序开发(dumb)

在上一篇《关于 DRM 中 DUMB 和 PRIME 名字的由来》 文章中,我们知道了 dumb buffer 名字的由来。本篇,我们将一起来写一个最简单的 GEM 驱动程序。

2020-06-18 17:50:08

LWN 翻译:DMA-BUF cache handling: Off the DMA API map (part 1)

kernel 中的 DMA API 都是用来在 CPU 和 device 之间共享 memory 的。近年来,传统的 DMA API 已经被运用到 ION、DMA-BUF 和 DMA-BUF Heap 这些接口中,但是在接下来的讲解中我们会看到,关于内存共享的效率问题,到现在都还没能被彻底解决掉。

2020-06-14 15:01:54

关于 DRM 中 DUMB 和 PRIME 名字的由来

在上一篇《DRM驱动程序开发(VKMS)》文章里,我们学习了如何编写一个最简单的 KMS 驱动。而本篇,我将以叙述的形式为大家讲解 DRM GEM 的相关概念,代码留到下一篇进行讲解。我知道,大多数的 DRM 初学人员,在刚接触到 GEM 相关概念时,首先困惑的不是 GEM 架构有多难,而是 GEM 里面的那些专业术语到底是怎么来的?为什么要这样命名?比如本篇要讲的“DUMB”和“PRIME”,当你得知它们的作用时,你甚至会有些愤慨:它们的名字和它们的功能简直毫无逻辑关系!是 DRM 社区的大佬们都喜欢

2020-05-19 00:41:27

DRM 驱动程序开发(VKMS)

VKMS 是 “Virtual Kernel Mode Setting” 的缩写,它于2018年7月5日被合入到 linux-4.19 主线版本中,并存放在 drivers/gpu/drm/vkms 目录下。之所以称它为 Virtual KMS,是因为该驱动不需要真实的硬件,它完全是一个软件虚拟的“显示”设备,甚至连显示都算不上,因为当它运行时,你看不到任何显示内容。

2020-04-27 00:12:37

Wayland/Weston 启动方式简介

本文简单介绍 Weston 常用的几种 backend 启动方式。目前最新的 Weston 8.0.0 支持如下几种 backend:drm-backendfbdev-backendheadless-backendrdp-backendwayland-backendx11-backend其中 headless-backend 不带任何 UI 界面,主要用于 weston 自测试,rdp-backend 则用于远程桌面。这两个 backend 本文不做介绍。

2020-03-17 14:26:25

Render Hell —— 史上最通俗易懂的GPU入门教程(五)

Render Hell – Book V避免使用小网格检查是否真的有必要使用小网格,或者是否可以将多个小网格组合成一个大网格。如果你有小网格,可以和 Graphic 工程师聊一聊,获取关于多边形个数“最佳点”(sweet spot,即低于该三角形个数的网格将无法得到更快的渲染速度)的信息。所以,如果你确实需要保留某个小网格,你可能需要采取一些措施来让事情顺利进行。你也需要注意多材质的问题。如果有一个大网格,却使用了5种材质,则在渲染过程中该大网格会被拆开,这意味着你现在又有了5个小网格。也许 Altl

2020-02-08 00:36:10

Render Hell —— 史上最通俗易懂的GPU入门教程(四)

Render Hell – Book IV首先,在填充命令缓冲区之前,你可以对所有的命令进行排序(例如按 Render State 进行排序),这样就可以大大减少那些不必要的 Change State 命令,因为在切换状态之前,你已经遍历了所有使用相同 Render State 的网格。

2020-02-08 00:35:29

Render Hell —— 史上最通俗易懂的GPU入门教程(三)

Render Hell – Book III欢迎来到第三篇!这里我们将检查一些在渲染过程中可能出现的问题。但首先,我们来点小练习:知道一个问题是有好处的,而真正去感受一个问题则更有助于理解。所以让我们试着感觉自己像个 CPU / GPU 吧。

2020-02-08 00:34:42

Render Hell —— 史上最通俗易懂的GPU入门教程(二)

Render Hell – Book IIPipeline 详解关于本篇文章,我收到的大多数积极反馈是:非常漂亮的演示说明,但是你的 Pipeline 已经是6年前的了!最初我一直不明白这句话是什么意思,直到 Christoph Kubisch 加入到我的 Render Hell 创作中来,我才明白这句话的含义。他是一名就职于 NVIDIA 的技术开发工程师,无论我有什么样的问题,他都会为我一一解答。请相信我,我的问题实在是太多了!????

2020-02-08 00:33:57

Render Hell —— 史上最通俗易懂的GPU入门教程(一)

Render Hell – Book I如今对美术师的要求越来越高,因为在计算机眼里,他们提供的资源(asset)不过是一堆 **顶点** 和 **纹理** 数据的集合而已。而将这些数据转换为最终的图像,则主要是通过计算机中的 CPU 和 GPU 来完成的。

2020-02-08 00:32:59

dma-buf 由浅入深(八) —— ION 简化版

本篇我们将在上一篇的基础上,实现一个简化版的ION驱动,以此来实现任意 size 大小的内存分配。如果你对 dma-buf 还不熟悉,强烈建议先阅读本系列教程的 1~6 篇,对 dma-buf 有一定理解后再回过头来阅读本文。

2020-01-12 20:09:53

dma-buf 由浅入深(七) —— alloc page 版本

在前面的 dma-buf 系列文章中,exporter 所分配的内存都是通过 kzalloc() 来分配的。本篇我们换个方式,使用 alloc_page() 来分配内存。

2020-01-12 20:06:09

dma-buf 由浅入深(六) —— begin / end cpu_access

本篇我们将一起来学习 dma-buf 用于 Cache 同步操作的 begin_cpu_access 和 end_cpu_access 这两个接口。之所以将这两个接口放在第六篇讲解,是因为它们在内核中的使用频率并不高,只有在特殊场景下才派的上用场。

2019-11-26 00:12:46

dma-buf 由浅入深(五) —— File

在上一篇《dma-buf 由浅入深(四)—— mmap》中,曾提到过 dma_buf_fd() 这个函数,该函数用于创建一个新的 fd,并与 dma-buf 的文件关联起来。本篇我们一起来重点学习 dma-buf 与 file 相关的操作接口,以及它们的注意事项。

2019-11-26 00:12:33

dma-buf 由浅入深(四) —— mmap

前面的两篇文章《dma-buf 由浅入深(二) —— kmap/vmap》和《dma-buf 由浅入深(三) —— map attachment》都是在 kernel space 对 dma-buf 进行访问的,本篇我们将一起来学习,如何在 user space 访问 dma-buf。当然,user space 访问 dma-buf 也属于 CPU Access 的一种。

2019-11-26 00:12:20

dma-buf 由浅入深(三) —— map attachment

在上一篇《kmap/vmap》中,我们学习了如何使用 CPU 在 kernel 空间访问 dma-buf 物理内存,但如果使用CPU直接去访问 memory,那么性能会大大降低。因此,dma-buf 在内核中出现频率最高的还是它的 dma_buf_attach() 和 dma_buf_map_attachment() 接口。本篇我们就一起来学习如何通过这两个 API 来实现 DMA 硬件对 dma-buf 物理内存的访问。

2019-11-26 00:12:05

dma-buf 由浅入深(二) —— kmap / vmap

在上一篇《最简单的 dma-buf 驱动程序》中,我们学习了编写 dma-buf 驱动程序的三个基本步骤,即 dma_buf_ops 、 dma_buf_export_info、 dma_buf_export()。在本篇中,我们将在 exporter-dummy 驱动的基础上,对其 dma_buf_ops 的 kmap / vmap 接口进行扩展,以此来演示这两个接口的使用方法。

2019-11-26 00:11:46

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。