【chromium】 渲染显示相关概念

DRM(Direct Rendering Manager)

DRM 由两个部分组成:一是 Kernel 的子系统,这个子系统对硬件 GPU 操作进行了一层框架封装。二是提供了一个 libdrm 库,里面封装了一系列 API,用来进行图像显示。
说到这里,其实这么理解最简单,你把你要画的东西交给DRM,DRM会把要画的东西交给GPU,然后显示。
那么DRM存在的必要性是什么呢?

DRM是Linux驱动(显卡驱动?)和显卡挨得比较近,再上层才是OpenGL,DRM是显卡驱动的一种架构。

OpenGL

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。
OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备(显卡)厂商提供,而且非常依赖于该厂商提供的硬件(因为显卡厂商会提供一些GPU提供的API,直接使用这样的API绘图被称为硬件加速)。

开放源代码库Mesa是一个纯基于软件的图形API(即不咋支持硬件加速,毕竟不收钱),它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API(或者说是开源版本的OpenGL)。

那么OpenGL可以干什么呢?简单地举个例子,你想画一条线,这个线有一些特征,什么颜色,都能由OpenGL提供的API设置,然后绘制出来,这些API可以完全通过软件实现,但是OpenGL为大部分或者全部都使用硬件加速设计的(都由GPU提供的API来绘制的话更快)。

上面提到的软件实现是指由OpenGL内部实现在内存中绘制,然后将内存交给GPU绘制。

和其同级的还有微软的DirectX,Vulkan

另外还有专为嵌入式实现的OpenGL ES版本

EGL

EGL是由Khronos Group提供的一组平台无关的API,它的主要功能如下:

  1. 和本地窗口系统(native windowing system)通讯;
  2. 查询可用的配置;
  3. 创建OpenGL ES可用的“绘图表面”(drawing surface);
  4. 同步不同类别的API之间的渲染,比如在OpenGL ES和OpenVG之间同步,或者在OpenGL和本地窗口的绘图命令之间;
  5. 管理“渲染资源”,比如纹理映射(rendering map)。

可以看出EGL和OpenGL是有关联的,EGL能给OpenGL的使用提供一些帮助。EGL是位于OpenGL和本地平台窗口系统(例如X11或者wayland)之间的一层接口。用于帮助OpenGL绘制的图形显示在窗口系统中。

GBM(Generic Buffer Management)

了解到GBM还是在Chromium的开源项目中,它和EGL功能类似,但是比EGL功能多一些。

gbm(通用缓冲区管理),它提供了一种为Mesa绑定的图形渲染分配缓冲区的机制。GBM旨在被当做一个本地平台为了工作在DRM上的EGL或者openwfd。它创建的句柄可用于初始化EGL和创建渲染目标缓冲区。
Mesa GBM是图形驱动程序特定缓冲区管理API(例如各种libdrm_ *库)的抽象,通过调用Mesa GPU驱动程序在内部实现。
例如,Wayland合成器 Weston使用OpenGL ES 2进行渲染,它通过调用EGL进行初始化。由于服务器在“裸KMS驱动程序 ”上运行,因此它使用EGL DRM平台,它可以真正称为GBM平台,因为它依赖于Mesa GBM接口。
在XDC2014,Nvidia员工Andy Ritger提议增强EGL以取代GBM。

这么理解会比较好,EGL对于OpenGL就相当于Mesa GBM对于Mesa。

转载于:https://www.cnblogs.com/lenomirei/p/11379535.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core MVC 之区域(Area)

区域(Area)是一个 ASP.NET MVC 功能,用于将相关功能组织为一个单独的命名空间(用于路由)和文件结构(用于视图)。使用区域通过向控制器和操作添加 一个路由参数(area)来创…

esp32 arduino adc_英雄联盟手游射手出装怎么出 adc英雄出装推荐

2020-11-02 18:06:31 角色扮演 人气值:加载中...英雄联盟手游adc怎么出装备?英雄联盟手游虽然没有上线国服和台湾服,但是我们已经有很多热心的玩家在外服中研究出了各种射手的玩法,那么adc要怎么出装呢?小编已经准备…

camel.js_Camel 2.11 –没有Spring的Camel Web应用程序

camel.js在撰写本文时,我们刚刚向即将到来的Apache Camel 2.11添加了一个新组件,该组件允许使用Camel运行Web应用程序,而不必依赖Spring Framework来加速Camel。 或与此相关的任何其他第三方框架。 有点as愧地说,在2013年&#x…

宅男计划

题解 $dp$不行考虑三分 发现单峰 1.理性打表,得到单峰 2.感性思考,你会发现你买食物次数越多,你钱数越少,你买的好食品更多,你买食物次数越少,你钱数越多,然而你必须买一些价格贵保质期长弥补次数少. 单峰,我们三分就完了(其实也可以模拟退火,然而我参数爆炸了一直60分) 那么$c…

.net 后台 下载 图片_特殊的 “图片软件” !

01 引语简单的图片处理软件我说过不少,像windows自带的图片编辑、在线处理图片的稿定设计、或者ps的一些插件。虽然我知道这类工具型软件的文章,大多数小伙伴都只是随便看一眼,心里默念 “咦,好像有用!”,…

流操作中的noException

本文介绍了一些简单的编码实践。 没什么好看的。 在StackOverflow上也进行了讨论。 您只是将一个庞大而复杂的循环重构为一个更具可读性的流表达式,而忘记了某些方法调用引发了异常。 包含此代码的方法将引发此异常,该异常在方法头中声明。 您不想在此级…

optimize table 需要多久_吉林市政工程资质新办需要多久

七。 暖通空调专业:水暖工程,建筑环境与设备,环境工程,暖通空调,供暖和通风与空调,制冷和空调,水暖,供暖和通风,HVAC,公共设备安装。如何申请第三级土木工程资…

Java EE 6 开发环境

软件安装: 选择 Glassfish 支持 Java EE 6 的最新版本 3.1.2.2根据 Glassfish 3.1.2 的 certification matrix,要求 JDK 1.6 update 29,因此,选择 JDK 6 最新版本 JDK 6u45选择 Eclipse Indigo,其之后的版本要求 JDK 7…

mysql连接不断线_某些小时后MySql连接自动掉线

mysql连接不断线MySql配置为删除任何闲置超过8小时的连接。 这意味着什么? 在8个小时的间隔后返回到已部署的应用程序之后(如果未更改默认SQL参数),将会遇到异常情况。 如何解决这个问题? 增加wait_time参数-不是一个…

pb65 xp 安装无反应_长春优质AFB型耐腐蚀泵安装

长春优质AFB型耐腐蚀泵安装 k5b5b5s长春优质AFB型耐腐蚀泵安装 并及时更换轴套。而随着科技的不断发展,新式设备的问世,设备一般都开始被筛选。无密封自吸泵无密封自吸泵就是一种新式泵,该泵密封可靠,选用无泄漏密封设备&#xff…

虚函数探秘

C的多态分为动态多态和静态多态,其中静态多态主要靠重载和模板来实现,而动态多态则主要靠继承来实现了。 那么静态和动态,怎么算静,怎么算动呢?静态多指编译期能决定的事情,而动态多指运行时才决定的事情。…

Errai框架简介

Errai是Red Hat开发和维护的框架,旨在结合GWT和JEE世界的优点。 根据Red Hat的说法,Errai是基于GWT的框架,用于使用下一代Web技术构建富Web应用程序。 在此简单声明的背后,存在一种与GWT完全不同的开发方式,在下面的文…

动态壁纸安卓_高清无水印!这4款壁纸软件,让你的手机好看又独特

手机与我们每日相伴,我们总会精心挑选各种图片设置为手机壁纸,有时换个壁纸就像换了一种心情一样。但网上搜索的壁纸大同小异,有没有风格独特又有趣的?今天就给大家推荐4款各具特色的壁纸App,保证给你耳目一新的感觉。…

在线生成安卓APP图标

移动应用图标/启动图生成工具,一键生成所有尺寸的应用图标/启动图 在线生成安卓APP图标生成 图标在 线 在线图标 安卓图标 生成图标 https://icon.wuruihong.com/ 在线png图片压缩 png压缩 https://compresspng.com/zh/ 在线gif图片压缩 gif压缩 https://www.soog…

NOIP模拟测试29「爬山·学数数·七十和十七」

爬山题解不想写了 学数数 离散化然后找到以每一个值为最大值的连续子段有多少个,然后开个桶维护 那么怎么找以每一个值为最大值的连续子段个数 方法1(我的极笨的方法) 考试时我的丑陋思路, 定义极左值为左面第一个大于当前值的值,极右值为右面第一个大于当前值的值 ,找到最大值…

手机音频拼接软件_良心分享:业界最顶尖的软件!

01短视频的爆火,让全民都接触了“剪辑”要知道在最最最开始大众离它很远,更多是一种职业而非爱好最具影响力的是抖音、B站等平台抖音让更多人接触到了剪辑哔哩让更多人学会剪辑技术虽然抖音的视频时长普遍较短但这并不妨碍剪辑技术的展现比如&#xff0c…

java堆内存和堆外内存_Java堆空间,本机堆和内存问题

java堆内存和堆外内存最近,我正在和一个朋友讨论为什么Java进程使用的内存比启动Java进程时设置的最大堆多。 代码创建的所有Java对象都是在Java堆空间内创建的,其大小由-Xmx选项定义。 但是一个Java进程由很多空间组成,而不仅仅是Java堆空间…

springboot实践1

环境安装 安装jdk 推荐安装jkd1.8,我使用的是mac,假设已经安装好homebrew,则jdk的安装指令是: brew install java 在 ~/zshrc ,添加两行 export JAVA_HOME你的jdkPath export PATH$PATH:$JAVA_HOME;然后保存; 输入 echo ${JAVA_HOME} 回车&…

电脑入门基础教程_ARM入门最好的文章------转载一位资身工程师的入门心得

开始学ARM一团雾水,不知道如何入手.这个介绍的比较全面.本人认为aRM入门最好的文章1. 抓住51开发ARM这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了&#xf…

项目包装组织

程序包是Java的基本概念,是您开始用该语言编程时偶然发现的第一件事。 作为一个初学者,您可能不太在意软件包的结构,但是随着您成为经验丰富且成熟的软件开发人员,您开始思考可以采取哪些措施来提高其效率。 有几个主要选项需要考…