过奖了是什么意思| 肝风内动是什么原因造成的| 4月19号是什么星座| 沙僧的武器是什么| 肚子大什么原因| 班禅是什么意思| doge是什么意思| 劳作是什么意思| 亚麻是什么面料| 下巴两边长痘痘是什么原因| 送老师送什么礼物好| 御史相当于现在什么官| 奕五行属什么| 伏特加是什么意思| 随心而欲是什么意思| 什么时候立冬| 大便不通吃什么药| 10月16是什么星座| 喝酒后头晕是什么原因| 吃什么不上火| 胎儿缺氧孕妇会有什么反应| 纠缠什么意思| 吃小米粥有什么好处| 孕妇适合吃什么鱼| 放鸽子是什么意思| 怀字五行属什么| 拉稀吃什么药最有效果| 什么的睡觉| 大便出油是什么原因| 14k金是什么意思| 包皮开裂用什么药| hedgren是什么品牌| 藿香正气水什么味| 沉甸甸的爱是什么意思| 胡同是什么意思| bally属于什么档次| 想睡睡不着是什么原因| 消炎药有什么| 一月是什么月| 夏天什么时候结束| 番薯是什么时候传入中国的| 七叶子是什么意思| 脾五行属什么| 12月2日是什么星座| 什么的高山| 死而什么什么| 为什么经常刷牙还牙黄| 叫姑姑是什么关系| cpc是什么意思| 员级职称是什么意思| 为什么一直拉肚子| 兴风作浪什么意思| 禾加比读什么| 国防部长什么级别| 血氧低是什么原因| 珙桐属于什么植物| 什么样的大便是正常的| 肩膜炎的症状是什么| 浅绿色配什么颜色好看| 高亢是什么意思| 20分贝相当于什么声音| 跳楼是什么感觉| 老人嘴唇发紫是什么原因| 白癜风是什么病| 大意失荆州是什么意思| 堪称什么意思| 菲律宾货币叫什么| 乳腺结节和乳腺增生有什么区别| 什么叫抗氧化| 长期吃二甲双胍有什么副作用| 言字旁与什么有关| 舌系带长有什么影响吗| 暖宫贴贴在什么位置| 毫无违和感什么意思| 看肛门挂什么科| 香港为什么不用人民币| 教师节属什么生肖| 孩子为什么不说话| pwr是什么意思| 宀与什么有关| 妈妈的堂哥叫什么| 崩塌的读音是什么| 什么食物胶原蛋白含量高| 眼角膜是什么| 喝什么能变白| 额头长痘是因为什么| 眼睛红痒用什么眼药水| 胃癌手术后吃什么补品| 有尿意但是尿不出来是什么原因| 鸾凤是什么意思| 子宫彩超能检查出什么| 7月初7是什么节日| 舌苔厚黄吃什么药最好| 尿起泡沫是什么原因| 西字五行属什么| 925银什么意思| 什么是道家| 父亲节该送什么礼物| 九里香什么时候开花| 女生安全期是什么时候| 双非是什么| hiv弱阳性是什么意思| 佛手是什么东西| 阿莫西林是什么| 巴甫洛夫的狗比喻什么| 特种兵是干什么的| 13颗珠子的手串什么意思| 女性做结扎手术对身体有什么危害| 心肌炎查什么能查出来| 胃反流吃什么药效果好| 胃痛吃什么药最有效| 压力山大什么意思| 皮下男是什么意思| 药师佛手里拿什么法器| 田七与三七有什么区别| 牡蛎是什么东西| 苋菜不能和什么一起吃| 拉肚子应该吃什么药| 吃什么全面补充维生素| 什么是埋线双眼皮| hr医学上是什么意思| 阴道炎吃什么消炎药| 后脑勺疼痛什么原因引起的| ogtt是什么意思| c1和c2有什么区别| 什么是靶向治疗| jc是什么牌子| 画蛇添足的寓意是什么| 芈月和秦始皇是什么关系| 头出虚汗是什么原因引起的| 情人节送什么花| 梦到龙预示着什么| 两肺纹理增重什么意思| 腱鞘炎是什么原因| 同房后为什么会出血| 520是什么节日| 8.1号是什么星座| 乙肝两对半145阳性是什么意思| 牙齿突然酸痛什么原因| 830是什么意思| 什么时候做四维| 利妥昔单抗是治什么病| 白居易有什么之称| 为什么白天尿少晚上尿多| 灰指甲应该挂什么科室| 香油吃多了有什么害处| 葡萄胎是什么| 人体缺钾会有什么症状| 血小板计数偏高是什么原因| 吐血拉血是什么病的症状| 尿检潜血是什么意思| 麒麟飞到北极会变成什么| gary什么意思| c2m模式是什么意思| 阿扎西是什么意思| 右边锁骨疼是什么原因| 女人的逼长什么样| exr是什么牌子| 帽缨是什么意思| 2005属什么| 公鸭嗓是什么声音| 蚝油是什么做的| 喉咙痛有什么好办法| 什么是保健食品| 唯女子与小人难养也是什么意思| 儿童办护照需要什么证件| 葫芦为什么会苦| 胰腺在人体什么位置| 专科和本科有什么区别| 艾叶泡水喝有什么功效| 金字旁成是什么字| 乳腺点状强回声是什么意思| 梦见自己杀人了是什么意思| 牙髓炎是什么原因引起的| 心什么诚什么| 田加比念什么| 口腔溃疡是什么原因造成的| 碟中谍是什么意思| 酵母菌是什么| 脑供血不足吃什么中成药好| 天冬氨酸氨基转移酶高是什么原因| 嘴唇上起泡是什么原因| 表面积是什么意思| 什么体质人容易长脚气| 为什么叫a股| 什么样的梦想| 庆幸是什么意思| 什么泡水喝杀幽门螺杆菌| 榴莲不能跟什么一起吃| 苦瓜有什么功效| 97年是什么生肖| 菊花长什么样| 梦见吃桃子是什么预兆| 月牙消失了是什么原因| 训练有素是什么意思| d二聚体是什么| 8月14是什么星座| 产检挂什么科| 印度人是什么人种| 水瓶座是什么象星座| 什么花一年四季都开花| iq什么意思| hcg稀释是什么意思| 亚铁是什么| 7777什么意思| 老是头疼是什么原因| 什么是紫癜| 吃生南瓜子有什么好处| 浅绿色是什么颜色| 金与什么相生相克| 吃什么能消除囊肿| 免疫力是什么意思| 子宫内膜14mm说明什么| 性无能是什么意思| 教育的目的是什么| 话说多了声音嘶哑是什么原因| 乙肝表面抗原高是什么意思| 肛周水泡是什么病| 拉痢疾吃什么药| c反应蛋白偏高是什么原因| 刮痧是什么| 10月29号是什么星座| 血清铁蛋白高说明什么| 锦衣卫是干什么的| 狐臭用什么药最好| 嬛嬛一袅楚宫腰什么意思| 射手座与什么星座最配| 西地那非有什么副作用| 胸前长痘痘是什么原因| 女孩当兵需要什么条件| 老人流口水是什么原因引起的| 生吃番茄有什么好处| 血糖高会有什么症状| 急性子是什么意思| 什么牛不吃草| 胆固醇偏高吃什么食物可以降胆固醇| 胎盘血池是什么意思| fazeya是什么牌子| 海姆立克急救法是什么| 老是犯困是什么原因| 咳嗽喝什么汤| 荡气回肠什么意思| 老是出汗是什么原因| 蒲公英有什么功效| 奇异是什么意思| 喝水都长肉是什么原因| 猪八戒的真名叫什么| 白内障的症状是什么| 孕妇贫血吃什么补血最快| 覅是什么意思| 海市蜃楼为什么可怕| 木瓜什么味道| 返酸水吃什么药| 右肋骨疼是什么原因| 黄色有什么黄| 负心汉是什么意思| 三班倒什么意思| 尿道口发痒是什么原因| 什么是贵妇脸| 农历五月属什么生肖| 提手旁的字有什么| 口交是什么| 茶氨酸是什么| 尿酸高吃什么药效果好| 百度Jump to content

常温酸奶无营养?“品质消费”尚需正确认知

From Wikipedia, the free encyclopedia
Flowchart with Tux, the Linux penguin
Data and instructions are sent to the graphics processing unit (GPU) for processing. The rendered results are stored in a framebuffer, which content is scanned by the display controller and sent to the screen.
百度 又比如,在“双一流”高校遴选中,如果把创新创业、与企业融通创新作为重要的加分项,高校就一定会有积极性。

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

Drivers without freely (and legally) available source code are commonly known as binary drivers. Binary drivers used in the context of operating systems that are prone to ongoing development and change (such as Linux) create problems for end users and package maintainers. These problems, which affect system stability, security and performance, are the main reason for the independent development of free and open-source drivers. When no technical documentation is available, an understanding of the underlying hardware is often gained by clean-room reverse engineering. Based on this understanding, device drivers may be written and legally published under any software license.

In rare cases, a manufacturer's driver source code is available on the Internet without a free license. This means that the code can be studied and altered for personal use, but the altered (and usually the original) source code cannot be freely distributed. Solutions to bugs in the driver cannot be easily shared in the form of modified versions of the driver. Therefore, the utility of such drivers is significantly reduced in comparison to free and open-source drivers.

Problems with proprietary drivers

[edit]

Software developer's view

[edit]
Flowchart; see caption
Illustration of the Linux graphics stack

There are objections to binary-only drivers based on copyright, security, reliability and development concerns. As part of a wider campaign against binary blobs, OpenBSD lead developer Theo de Raadt said that with a binary driver there is "no way to fix it when it breaks (and it will break)"; when a product which relies on binary drivers is declared to be end-of-life by the manufacturer, it is effectively "broken forever."[1] The project has also stated that binary drivers[2] "hide bugs and workarounds for bugs",[3] an observation which has been somewhat vindicated by flaws found in binary drivers (including an exploitable bug in Nvidia's 3D drivers discovered in October 2006 by Rapid7). It is speculated that the bug has existed since 2004; Nvidia has denied this, asserting that the issue was only communicated to them in July 2006 and the 2004 bug was a bug in X.Org (not in Nvidia's driver).[4]

Binary drivers often do not work with current versions of open-source software, and rarely support development snapshots of open-source software; it is usually not directly possible for a developer to use Nvidia's or ATI's proprietary drivers with a development snapshot of an X server or a development snapshot of the Linux kernel. Features like kernel mode-setting cannot be added to binary drivers by anyone but the vendors, which prevents their inclusion if the vendor lacks capacity or interest.

In the Linux kernel development community, Linus Torvalds has made strong statements on the issue of binary-only modules: "I refuse to even consider tying my hands over some binary-only module ... I want people to know that when they use binary-only modules, it's their problem".[5] Another kernel developer, Greg Kroah-Hartman, has said that a binary-only kernel module does not comply with the kernel's license (the GNU General Public License); it "just violates the GPL due to fun things like derivative works and linking and other stuff."[6] Writer and computer scientist Peter Gutmann has expressed concern that the digital rights management scheme in Microsoft's Windows Vista operating system may limit the availability of the documentation required to write open drivers, since it "requires that the operational details of the device be kept confidential."[7]

In the case of binary drivers, there are objections due to free software philosophy, software quality and security concerns.[8] In 2006, Greg Kroah-Hartman concluded that:

Closed source Linux kernel modules are illegal. That's it, it is very simple. I've had the misfortune of talking to a lot of different IP lawyers over the years about this topic, and every one that I've talked to all agree that there is no way that anyone can create a Linux kernel module, today, that can be closed source. It just violates the GPL due to fun things like derivative works and linking.[9]

The Linux kernel has never maintained a stable in-kernel application binary interface.[10] There are also concerns that proprietary drivers may contain backdoors, like the one found in Samsung Galaxy-series modem drivers.[11]

Hardware developer's view

[edit]
Another flowchart; see caption
In the future, libGL-fglrx-glx could use the libDRM of the Radeon open-source driver instead of the proprietary binary blob; most of the investment is in the userspace driver.

When applications such as a 3D game engine or a 3D computer graphics software shunt calculations from the CPU to the GPU, they usually use a special-purpose API like OpenGL or Direct3D and do not address the hardware directly. Because all translation (from API calls to GPU opcodes) is done by the device driver, it contains specialized knowledge and is an object of optimization. Due to the history of the rigidity of proprietary driver development there has been a recent surge in the number of community-backed device drivers for desktop and mobile GPUs. Free and Open Hardware organizations like FOSSi, LowRISC, and others, would also benefit from the development of an open graphical hardware standard. This would then provide computer manufacturers, hobbyists, and the like with a complete, royalty-free platform with which to develop computing hardware and related devices.

The desktop computer market was long dominated by PC hardware using the x86/x86-64 instruction set and GPUs available for the PC. With three major competitors (Nvidia, AMD and Intel). The main competing factor was the price of hardware and raw performance in 3D computer games, which is greatly affected by the efficient translation of API calls into GPU opcodes. The display driver and the video decoder are inherent parts of the graphics card: hardware designed to assist in the calculations necessary for the decoding of video streams. As the market for PC hardware has dwindled, it seems unlikely that new competitors will enter this market and it is unclear how much more knowledge one company could gain by seeing the source code of other companies' drivers.

The mobile sector presents a different situation. The functional blocks (the application-specific integrated circuit display driver, 2D and 3D acceleration and video decoding and encoding) are separate semiconductor intellectual property (SIP) blocks on the chip, since hardware devices vary substantially; some portable media players require a display driver that accelerates video decoding, but does not require 3D acceleration. The development goal is not only raw 3D performance, but system integration, power consumption and 2D capabilities. There is also an approach which abandons the traditional method (Vsync) of updating the display and makes better use of sample and hold technology to lower power consumption.

During the second quarter of 2013 79.3% of smartphones sold worldwide were running a version of Android,[12] and the Linux kernel dominates smartphones. Hardware developers have an incentive to deliver Linux drivers for their hardware but, due to competition, no incentive to make these drivers free and open-source. Additional problems are the Android-specific augmentations to the Linux kernel which have not been accepted in mainline, such as the Atomic Display Framework (ADF).[13] ADF is a feature of 3.10 AOSP kernels which provides a dma-buf-centric framework between Android's hwcomposer HAL and the kernel driver. ADF significantly overlaps with the DRM-KMS framework. ADF has not been accepted into mainline, but a different set of solutions addressing the same problems (known as atomic mode setting) is under development. Projects such as libhybris harness Android device drivers to run on Linux platforms other than Android.

Software architecture

[edit]
Illustration of differences between Gallium3D and Direct Rendering Infrastructure models
Mesa (DRI) and Gallium3D have different driver models, but they share free and open-source code.
Driver example matrix
An example matrix of the Gallium3D driver model. With the introduction of the Gallium3D tracker and WinSys interfaces, 18 modules are required instead of 36. Each WinSys module can work with each Gallium3D device driver module and each State Tracker module.

Free and open-source drivers are primarily developed on and for Linux by Linux kernel developers, third-party programming enthusiasts and employees of companies such as Advanced Micro Devices. Each driver has five parts:

  1. A Linux kernel component DRM
  2. A Linux kernel component KMS driver (the display controller driver)
  3. A libDRM user-space component (a wrapper library for DRM system calls, which should only be used by Mesa 3D)
  4. A Mesa 3D user-space component. This component is hardware-specific; it is executed on the CPU and translates OpenGL commands, for example, into machine code for the GPU. Because the device driver is split, marshalling is possible. Mesa 3D is the only free and open-source implementation of OpenGL, OpenGL ES, OpenVG, GLX, EGL and OpenCL. In July 2014, most of the components conformed to Gallium3D specifications. A fully functional State Tracker for Direct3D version 9 is written in C, and an unmaintained tracker for Direct3D versions 10 and 11 is written in C++.[14] Wine has Direct3D version 9. Another Wine component translates Direct3D calls into OpenGL calls, working with OpenGL.
  5. Device Dependent X (DDX), another 2D graphics device driver for X.Org Server

The DRM is kernel-specific. A VESA driver is generally available for any operating system. The VESA driver supports most graphics cards without acceleration and at display resolutions limited to a set programmed in the Video BIOS by the manufacturer.[15]

History

[edit]

The Linux graphics stack has evolved, detoured by the X Window System core protocol.

Free and open-source drivers

[edit]

ATI and AMD

[edit]

Radeon

[edit]
Diagram
Linux device drivers for AMD hardware in August 2016
Screenshot of glxinfo showing OpenGL information with glxgears running on a Linux system with AMDGPU kernel module

AMD's proprietary driver, AMD Catalyst for their Radeon, is available for Microsoft Windows and Linux (formerly fglrx). A current version can be downloaded from AMD's site, and some Linux distributions contain it in their repositories. It is in the process of being replaced with an AMDGPU-PRO hybrid driver combining the open-source kernel, X and Mesa multimedia drivers with closed-source OpenGL, OpenCL and Vulkan drivers derived from Catalyst.

The FOSS drivers for ATI-AMD GPUs are being developed under the name Radeon (xf86-video-ati or xserver-xorg-video-radeon). They still must load proprietary microcode into the GPU to enable hardware acceleration.[16][failed verification]

Radeon 3D code is split into six drivers, according to GPU technology: the radeon, r200 and r300 classic drivers and r300g, r600g and radeonsi Gallium3D drivers:

An up-to-date feature matrix is available,[17] and there is support for Video Coding Engine[18] and Unified Video Decoder.[19][20] The free and open-source Radeon graphics device drivers are not reverse-engineered, but are based on documentation released by AMD without the requirement to sign a non-disclosure agreement (NDA).[21][22][23] Documentation began to be gradually released in 2007.[24][25][26]

In addition to providing the necessary documentation, AMD employees contribute code to support their hardware and features.[18]

All components of the Radeon graphics device driver are developed by core contributors and interested parties worldwide. In 2011, the r300g outperformed Catalyst in some cases.

AMDGPU

[edit]

At the 2014 Game Developers Conference, AMD announced that they were exploring a strategy change to re-base the user-space part of Catalyst on a free and open-source DRM kernel module instead of their proprietary kernel blob.[27]

The release of the new AMDGPU kernel module and stack was announced on the dri-devel mailing list in April 2015.[28] Although AMDGPU only officially supports GCN 1.2 and later graphics cards,[29] experimental support for GCN 1.0 and 1.1 graphics cards (which are only officially supported by the Radeon driver) may be enabled via a kernel parameter.[30][31] A separate libdrm, libdrm-amdgpu, has been included since libdrm 2.4.63.[32]

The radeonsi 3D code mentioned in the prior Radeon paragraph is also used with amdgpu; the 3D driver has back ends for both radeon and amdgpu.

Nvidia

[edit]
Screenshot of grass growing out of the water
Screenshot of REnouveau, a program which collects data for most of Nouveau's reverse-engineering work

Nvidia's proprietary driver, Nvidia GeForce driver for GeForce, is available for Windows x86/x86-64, Linux x86/x86-64/ARM, OS X 10.5 and later, Solaris x86/x86-64 and FreeBSD x86/x86-64. A current version can be downloaded from the Internet, and some Linux distributions contain it in their repositories. The 4 October 2013 beta Nvidia GeForce driver 331.13 supports the EGL interface, enabling support for Wayland in conjunction with this driver.[33][34]

Nvidia's free and open-source driver is named nv.[35] It is limited (supporting only 2D acceleration), and Matthew Garrett, Dirk Hohndel and others have called its source code confusing.[36][37][38] Nvidia decided to deprecate nv, not adding support for Fermi or later GPUs and DisplayPort, in March 2010.[39]

In December 2009, Nvidia announced they would not support free graphics initiatives.[40] On 23 September 2013, the company announced that they would release some documentation of their GPUs.[41]

Nouveau is based almost entirely on information gained through reverse engineering. This project aims to produce 3D acceleration for X.Org/Wayland using Gallium3D.[42] On March 26, 2012, Nouveau's DRM component was marked stable and promoted from the staging area of the Linux kernel.[43] Nouveau supports Tesla- (and earlier), Fermi-, Kepler- and Maxwell-based GPUs.[44] On 31 January 2014, Nvidia employee Alexandre Courbot committed an extensive patch set which adds initial support for the GK20A (Tegra K1) to Nouveau.[45] In June 2014, Codethink reportedly ran a Wayland-based Weston compositor with Linux kernel 3.15, using EGL and a "100% open-source graphics driver stack" on a Tegra K1.[46] A feature matrix is available.[47] In July 2014, Nouveau was unable to outperform the Nvidia GeForce driver due to missing re-clocking support. Tegra-re is a project which is working to reverse-engineer nVidia's VLIW-based Tegra series of GPUs that predate Tegra K1.[48]

Nvidia distributes proprietary device drivers for Tegra through OEMs and as part of its Linux for Tegra (formerly L4T) development kit.[49] Nvidia and a partner, Avionic Design, were working on submitting Grate (free and open-source drivers for Tegra) upstream of the mainline Linux kernel in April 2012.[50][51] The company's co-founder and CEO laid out the Tegra processor roadmap with Ubuntu Unity at the 2013 GPU Technology Conference.[52]

Nvidia's Unified Memory driver (nvidia-uvm.ko), which implements memory management for Pascal and Volta GPUs on Linux, is MIT licensed. The source code is available in the Nvidia Linux driver downloads on systems that support nvidia-uvm.ko.

In May 2022, Nvidia announced a new initiative and policy to open source its GPU Loadable Kernel Modules with dual GPLMIT License, but only new models at alpha quality. But said "These changes are for the kernel modules, while the user-mode components are untouched. The user-mode remains closed source and is published with prebuilt binaries in the driver and the CUDA toolkit."[53] The open source driver has since been upgraded to production status and is now officially recommended for the RTX 20 series and later GPUs.[54][55] Blackwell (RTX 50 generation) and later NVIDIA GPU architectures are only supported by the open driver.[56]

Intel

[edit]

Intel has a history of producing (or commissioning) open-source drivers for its graphics chips, with the exception of their PowerVR-based chips.[57] Their 2D X.Org driver is called xf86-video-intel. The kernel mode-setting driver in the Linux kernel does not use the video BIOS for switching video modes; since some BIOSes have a limited range of modes, this provides more reliable access to those supported by Intel video adapters.

The company worked on optimizing their free Linux drivers for performance approaching their Windows counterparts, especially on Sandy Bridge and newer hardware where performance optimizations have allowed the Intel driver to outperform their proprietary Windows drivers in certain tasks, in 2011.[58][59][60] Some of the performance enhancements may also benefit users of older hardware.[61]

Support for Intel's LLC (Last Level Cache, L4-Cache, Crystalwell and Iris Pro) was added in Linux kernel 3.12.[62][63] In 2013, the company had 20 to 30 full-time Linux graphics developers.[64]

Matrox

[edit]

Matrox develops and manufactures the Matrox Mystique, Parhelia, G200, G400 and G550. Although the company provides free and open-source drivers for their chipsets which are older than the G550; chipsets newer than the G550 are supported by a closed-source driver.

S3 Graphics

[edit]

S3 Graphics develops the S3 Trio, ViRGE, Savage and Chrome, supported by OpenChrome.[65]

Arm Ltd

[edit]

Arm Ltd is a fabless semiconductor company which licenses semiconductor intellectual property cores. Although they are known for the licensing the ARM instruction set and CPUs based on it, they also develop and license the Mali series of GPUs, and more recently Imortalis GPUs that support ray-tracing. On January 21, 2012, Phoronix reported that Luc Verhaegen was driving a reverse-engineering attempt aimed at the Arm Mali series of GPUs (specifically, the Mali-200 and Mali-400 versions). The reverse-engineering project, known as Lima, was presented at FOSDEM on February 4, 2012.[66][67] On February 2, 2013, Verhaegen demonstrated Quake III Arena in timedemo mode, running on top of the Lima driver.[68] In May 2018, a Lima developer posted the driver for inclusion in the Linux kernel.[69] As of May 2019, the Lima driver is part of the mainline Linux kernel.[70]

Panfrost is a reverse-engineered driver effort for Mali Txxx (Midgard) and Gxx (Bifrost) GPUs. Introducing Panfrost talk was presented at X.Org Developer's Conference 2018. As of May 2019, the Panfrost driver is part of the mainline Linux kernel.[71]

ARM has indicated no intention of providing support for their graphics acceleration hardware licensed under a free and open-source license. However, ARM employees sent patches for the Linux kernel to support their ARM HDLCD display controller and Mali DP500, DP550 and DP650 SIP blocks in December 2015 and April 2016.[72][73]

Imagination Technologies

[edit]

Imagination Technologies is a fabless semiconductor company which develops and licenses semiconductor intellectual property cores, among which are the PowerVR GPUs. Intel has manufactured a number of PowerVR-based GPUs. PowerVR GPUs are widely used in mobile system on a chip (SoC) devices. Due to its wide use in embedded devices, the Free Software Foundation has put reverse-engineering of the PowerVR driver on its high-priority project list.[74] As of March 2022, Imagination has provided a FOSS driver for its Rogue architecture-based PowerVR GX6250 from 2014, and its more recent A-Series architecture-based AXE-1-16M and BXS-4-64 GPUs.[75]

Vivante

[edit]

Vivante Corporation is a fabless semiconductor company which licenses semiconductor intellectual property cores and develops the GCxxxx series of GPUs. A Vivante proprietary, closed-source Linux driver consists of kernel- and user-space parts. Although the kernel component is open-source (GPL), the user-space components—consisting of the GLES(2) implementations and a HAL library—are not; these contain the bulk of the driver logic.

Wladimir J. van der Laan found and documented the state bits, command stream and shader ISA by studying how the blobs work, examining and manipulating command-stream dumps. The Etnaviv Gallium3D driver is being written based on this documentation. Van der Laan's work was inspired by the Lima driver, and the project has produced a functional-but-unoptimized Gallium3D LLVM driver. The Etnaviv driver has performed better than Vivante's proprietary code in some benchmarks, and it supports Vivante's GC400, GC800, GC1000, GC2000, GC3000 and GC7000 series.[76] In January 2017, Etnaviv was added to Mesa with both OpenGL ES 2.0 and Desktop OpenGL 2.1 support.[77]

Qualcomm

[edit]

Qualcomm develops the Adreno (formerly ATI Imageon) mobile GPU series, and includes it as part of their Snapdragon mobile SoC series. Phoronix and Slashdot reported in 2012 that Rob Clark, inspired by the Lima driver, was working on reverse-engineering drivers for the Adreno GPU series.[78][79] In a referenced blog post, Clark wrote that he was doing the project in his spare time and that the Qualcomm platform was his only viable target for working on open 3D graphics. His employers (Texas Instruments and Linaro) were affiliated with the Imagination PowerVR and ARM Mali cores, which would have been his primary targets; he had working command streams for 2D support, and 3D commands seemed to have the same characteristics.[80] The driver code was published on Gitorious "freedreno",[81] and has been moved to Mesa.[82][83] In 2012, a working shader assembler was completed;[84] demonstration versions were developed for texture mapping[85] and phong shading,[86] using the reverse-engineered shader compiler. Clark demonstrated Freedreno running desktop compositing, the XBMC media player and Quake III Arena at FOSDEM on February 2, 2013.[87]

In August 2013, the kernel component of freedreno (MSM driver) was accepted into mainline and is available in Linux kernel 3.12 and later.[88] The DDX driver gained support for server-managed file descriptors requiring X.Org Server version 1.16 and above in July 2014.[89] In January 2016, the Mesa Gallium3D-style driver gained support for Adreno 430;[90] in November of that year, the driver added support for the Adreno 500 series.[91] Freedreno can be used on devices such as 96Boards Dragonboard 410c and Nexus 7 (2013) in traditional Linux distributions (like Debian and Fedora) and on Android.

Broadcom

[edit]
Software diagram
The Mesa driver for VideoCore4, VC4, was written from scratch by Broadcom's Eric Anholt.[92]

Broadcom develops and designs the VideoCore GPU series as part of their SoCs. Since it is used by the Raspberry Pi, there has been considerable interest in a FOSS driver for VideoCore.[93] The Raspberry Pi Foundation, in co-operation with Broadcom, announced on October 24, 2012, that they open-sourced "all the ARM (CPU) code that drives the GPU".[citation needed] However, the announcement was misleading; according to the author of the reverse-engineered Lima driver, the newly open-sourced components only allowed message-passing between the ARM CPU and VideoCore but offered little insight into Videocore and little additional programability.[94] The Videocore GPU runs an RTOS which handles the processing; video acceleration is done with RTOS firmware coded for its proprietary GPU, and the firmware was not open-sourced on that date.[95] Since there was neither a toolchain targeting the proprietary GPU nor a documented instruction set, no advantage could be taken if the firmware source code became available. The Videocoreiv project[96] attempted to document the VideoCore GPUs.

On February 28, 2014 (the Raspberry Pi's second anniversary), Broadcom and the Raspberry Pi Foundation announced the release of full documentation for the VideoCore IV graphics core and a complete source release of the graphics stack under a 3-clause BSD license.[97][98] The free-license 3D graphics code was committed to Mesa on 29 August 2014,[99] and first appeared on Mesa's 10.3 release.

Other vendors

[edit]

Although Silicon Integrated Systems and VIA Technologies have expressed limited interest in open-source drivers, both have released source code which has been integrated into X.Org by FOSS developers.[38] In July 2008, VIA opened documentation of their products to improve its image in the Linux and open-source communities.[100] The company has failed to work with the open-source community to provide documentation and a working DRM driver, leaving expectations of Linux support unfulfilled.[101] On January 6, 2011, it was announced that VIA was no longer interested in supporting free graphics initiatives.[102]

DisplayLink announced an open-source project, Libdlo,[103] with the goal of bringing support for their USB graphics technology to Linux and other platforms. Its code is available under the LGPL license,[104] but it has not been integrated into an X.Org driver. DisplayLink graphics support is available through the kernel udlfb driver (with fbdev) in mainline and udl/drm driver, which in March 2012 was only available in the drm-next tree.

Non-hardware-related vendors may also assist free graphics initiatives. Red Hat has two full-time employees (David Airlie and Jér?me Glisse) working on Radeon software,[105] and the Fedora Project sponsors a Fedora Graphics Test Week event before the launch of their new Linux distribution versions to test free graphics drivers.[106] Other companies which have provided development or support include Novell and VMware.

Open hardware projects

[edit]
See caption
Assembled Project VGA graphics board
Another circuit board
Open Graphics Project prototype

Project VGA aims to create a low-budget, open-source VGA-compatible video card.[107] The Open Graphics Project aims to create an open-hardware GPU. The Open Graphics Device v1 has dual DVI-I outputs and a 100-pin IDC connector. In September 2010, the first 25 OGD1 boards were made available for grant application and purchase.[108] The Milkymist system on a chip, targeted at embedded graphics instead of desktop computers, supports a VGA output, a limited vertex shader and a 2D texturing unit.[109]

The Nyuzi,[110] an experimental GPGPU processor, includes a synthesizable hardware design written in System Verilog, an instruction set emulator, an LLVM-based C-C++ compiler, software libraries and tests and explores parallel software and hardware. It can run on a Terasic DE2-115 field-programmable gate array board.[111][112]

If a project uses FPGAs, it generally has a partially (or completely) closed-source toolchain. There are currently a couple of open-source toolchains available, however, for Lattice-based FPGAs (notably for iCE40 and ECP5 boards) which utilize Project IceStorm,[113] and Trellis,[114] respectively. There is also a larger, ongoing effort to create the "GCC of FPGAs" called SymbiFlow[115] which includes the aforementioned FPGA toolchains as well as an early-stage open-source toolchain for Xilinx-based FPGAs.

See also

[edit]

References

[edit]
  1. ^ de Raadt, Theo (2025-08-06). "Open Documentation for Hardware". Presentation slides from OpenCON 2006. Retrieved 2025-08-06.
  2. ^ "What does "binary" means in device driver?". Retrieved November 14, 2017.
  3. ^ "3.9: "Blob!"". OpenBSD. Retrieved 2025-08-06.
  4. ^ "Linux - How does the Rapid7 Advisory R7-0025 affect the NVIDIA Unix driver?".
  5. ^ "a/lt-binary".
  6. ^ Kroah-Hartman, Greg. "Myths, Lies, and Truths about the Linux kernel". linux kernel monkey log.
  7. ^ Gutmann, Peter (2025-08-06). "A Cost Analysis of Windows Vista Content Protection". Retrieved 2025-08-06. {{cite journal}}: Cite journal requires |journal= (help)
  8. ^ Linux Weekly News, Aug 14, 2006: X.org, distributors, and proprietary modules
  9. ^ Kroah-Hartman, Greg (2006). "Myths, Lies, and Truths about the Linux kernel". Linux Symposium.
  10. ^ "The Linux Kernel Driver Interface". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  11. ^ "SamsungGalaxyBackdoor". 2025-08-06.
  12. ^ "Android Nears 80% Market Share In Global Smartphone Shipments, As iOS And BlackBerry Share Slides, Per IDC". 7 August 2013.
  13. ^ "Atomic Display Framework".
  14. ^ "Direct3D 9 state tracker". 16 July 2013. Archived from the original on 20 July 2013. Retrieved 15 November 2017.
  15. ^ "Index of /doc/Documentation/fb/". Retrieved 15 November 2017.
  16. ^ Details of Debian package firmware-linux-nonfree in Stable Debian.org
  17. ^ "Radeon Feature". Retrieved 15 November 2017.
  18. ^ a b "initial VCE support in Linux kernel and in the Mesa driver". 4 February 2014.
  19. ^ "drm-next-3.15 Feb 18". 18 February 2014.
  20. ^ "drm-next-3.15 Mar 04". 4 March 2014.
  21. ^ "AMD Developer Guides". Archived from the original on 2025-08-06.
  22. ^ "Documentation provided by AMD".
  23. ^ "AMD 3D Documentation list". Archived from the original on 2025-08-06.
  24. ^ "AMD to open up graphics specs". LWN.net. 2025-08-06. Retrieved 2025-08-06.
  25. ^ "AMD: GPU Specifications Without NDAs!". 2025-08-06. Retrieved 2025-08-06.
  26. ^ Airlie, David (2025-08-06). "AMD hand me specs on a CD". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  27. ^ "AMD exploring new Linux driver Strategy". 2025-08-06. Retrieved 2025-08-06.
  28. ^ "Initial AMDGPU driver release". 2025-08-06. Retrieved 2025-08-06.
  29. ^ "AMD Moves Forward With Unified Linux Driver Strategy, New Kernel Driver". Phoronix.
  30. ^ "AMDGPU driver documentation". Freedesktop.org.
  31. ^ "AMD Unleashes Initial AMDGPU Driver Support For GCN 1.0 / Southern Islands GPUs". Phoronix.
  32. ^ "libdrm 2.4.63". 2025-08-06.
  33. ^ "Support for EGL on 32-bit platforms". 2025-08-06. Retrieved 2025-08-06.
  34. ^ "lib32-nvidia-utils 340.24-1 File List". 2025-08-06.
  35. ^ "X.org nv driver page". 2025-08-06.
  36. ^ "Patch by Dirk Hohndel". 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06. ... opposed to such obfuscated code. We do not regard this as free software according to our standards
  37. ^ "Nouveau: The community & past, current and future developments" (PDF). 2025-08-06. Retrieved 2025-08-06.
  38. ^ a b Airlie, David M. (2025-08-06). "Open Source Graphic Drivers: They Don't Kill Kittens" (PDF). Proceedings of the Linux Symposium Volume One. Ottawa, Ontario, Canada. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  39. ^ "Nvidia deprecates "NV"". Phoronix. 2025-08-06.
  40. ^ "Nvidia's Response To Recent Nouveau Work". Phoronix. 2025-08-06.
  41. ^ "Nvidia offers to release public documentation on certain aspects of their GPUs". 2025-08-06. Retrieved 2025-08-06.
  42. ^ "Nouveau: Accelerated Open Source driver for nVidia cards". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  43. ^ "The Nouveau driver graduates from staging". LWN.net. 2025-08-06.
  44. ^ "Engineering names for Nvidia".
  45. ^ "drm/nouveau: initial support for GK20A (Tegra K1)". 2025-08-06.
  46. ^ "Codethink Gets The NVIDIA Jetson TK1 Running With Linux 3.15, Wayland". Phoronix. 2025-08-06.
  47. ^ "Nouveau Driver Feature Matrix". Retrieved 16 November 2017.
  48. ^ "Tegra-re". GitHub. Retrieved 16 November 2017.
  49. ^ "Linux For Tegra Archive". 30 January 2014. Retrieved 16 November 2017.
  50. ^ Mayo, Jon (2025-08-06). "[RFC 0/4] Add NVIDIA Tegra DRM support". dri-devel (Mailing list). Retrieved 2025-08-06.
  51. ^ Larabel, Michael (2025-08-06). "A NVIDIA Tegra 2 DRM/KMS Driver Tips Up". Phoronix Media. Retrieved 2025-08-06.
  52. ^ "GTC 2013: NVIDIA's Tegra Roadmap (6 of 11)". YouTube. 19 March 2013. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  53. ^ "NVIDIA Releases Open-Source GPU Kernel Modules". 2025-08-06. Retrieved 2025-08-06.
  54. ^ "NVIDIA 560 Linux Driver Beta Released - Defaults To Open GPU Kernel Modules". www.phoronix.com. Retrieved 2025-08-06.
  55. ^ "NVIDIA Promotes Their Open-Source GPU Kernel Driver Support". www.phoronix.com. Retrieved 2025-08-06.
  56. ^ "Chapter 44. Open Linux Kernel Modules". download.nvidia.com. Retrieved 2025-08-06.
  57. ^ An overview of graphic card manufacturers and how well they work with Ubuntu Ubuntu Gamer, January 10, 2011 (Article by Luke Benstead); (copy of the article)
  58. ^ "More Performance Comes Out Of Intel Linux SNB". Phoronix. 2025-08-06. Retrieved 2025-08-06.
  59. ^ "Intel Sandy Bridge Performance Goes Up Again". Phoronix. 2025-08-06. Retrieved 2025-08-06.
  60. ^ "Intel SNB Linux Driver Can Out Run Windows Driver". Phoronix. 2025-08-06. Retrieved 2025-08-06.
  61. ^ "A Historical Look At Intel Ironlake Graphics Performance". Phoronix. 2025-08-06. Retrieved 2025-08-06.
  62. ^ "drm/i915: Use eLLC/LLC by default when available".
  63. ^ "drm/i915: Use Write-Through cacheing for the display plane on Iris".
  64. ^ "Intel Has 20~30 Full-Time Linux Graphics Developers". 2025-08-06.
  65. ^ "OpenChrome". Retrieved 16 November 2017.
  66. ^ phoronix (6 February 2012). "Phoronix.com - FOSDEM 2012 - Open-Source ARM Mali". Archived from the original on 2025-08-06 – via YouTube.
  67. ^ Phoronix, Jan 21 2012: An Open-Source, Reverse-Engineered Mali GPU Driver
  68. ^ "Quake 3 Arena timedemo on top of the lima driver!". Archived from the original on 2025-08-06.
  69. ^ "Lima DRM driver [LWN.net]". lwn.net.
  70. ^ drm/lima: driver for ARM Mali4xx GPUs}
  71. ^ drm/panfrost: Add initial panfrost driver
  72. ^ "drm: Add support for the ARM HDLCD display controller". Linux kernel mailing list. 2025-08-06.
  73. ^ "Initial support for ARM Mali Display Controller". Linux kernel mailing list. 2025-08-06.
  74. ^ Free Software Foundation, Apr 25, 2005: High Priority Free Software Projects
  75. ^ "Imagination Tech Publishes Open-Source PowerVR Vulkan Driver For Mesa". www.phoronix.com. Retrieved 2025-08-06.
  76. ^ "laanwj/etna_viv". GitHub.
  77. ^ "etnaviv: gallium driver for Vivante GPUs".
  78. ^ Larabel, Michael (14 April 2012). "An Open-Source Graphics Driver for Snapdragon". Phoronix. Retrieved 15 April 2012.
  79. ^ Soulskill (14 April 2012). "Open-Source Qualcomm GPU Driver Published". Slashdot. Retrieved 15 April 2012.
  80. ^ Clark, Rob (14 April 2012). "Fighting back against binary blobs!". Linaro. Retrieved 15 April 2012.
  81. ^ Freedreno, 15 April 2012 Archived 24 October 2012 at the Wayback Machine
  82. ^ "Mesa/Gallium3D Gets Its First ARM SoC GPU Driver - Phoronix".
  83. ^ "Mesa (master): r600g: add Richland APU pci ids". 15 March 2013.
  84. ^ Clark, Rob (29 July 2012). "freedreno update: first renders shader assembler!". Retrieved 16 August 2012.
  85. ^ Clark, Rob (5 August 2012). "textured cube (fullscreen!)". Retrieved 16 August 2012.
  86. ^ Clark, Rob (15 August 2012). "Open Source lolscat!". Retrieved 16 August 2012.
  87. ^ "Open ARM GPU drivers – Freedreno". FOSDEM. 2025-08-06. Retrieved 2025-08-06.
  88. ^ "Merge the MSM driver from Rob Clark". kernel.org. 2025-08-06. Retrieved 2025-08-06.
  89. ^ "xf86-video-freedreno 1.2.0". freedesktop.org. 2025-08-06.
  90. ^ "Add support for adreno 430". Retrieved 15 November 2017.
  91. ^ "Index Mesa-Mesa". Retrieved 15 November 2017.
  92. ^ Anholt, Eric (2025-08-06). "New Job at Broadcom". Archived from the original on 2025-08-06.
  93. ^ "Phoronix on the Raspberry Pi GPU".
  94. ^ "Open Source ARM userland - Raspberry Pi". 24 October 2012.
  95. ^ "Open Source ARM userland - Raspberry Pi". 24 October 2012. Archived from the original on 30 October 2012. Retrieved 1 November 2012.
  96. ^ "hermanhermitage/videocoreiv". GitHub.
  97. ^ "Raspberry Pi marks 2nd birthday with plan for open source graphics driver". 28 February 2014.
  98. ^ Upton, Eben (28 February 2014). "A birthday present from Broadcom - Raspberry Pi". Raspberry Pi Foundation. Retrieved 8 July 2019.
  99. ^ "vc4: Initial skeleton driver import". The Mesa 3D Graphics Library. 2025-08-06.
  100. ^ Larabel, Michael (2025-08-06). "VIA Publishes Three Programming Guides". Phoronix. Retrieved 2025-08-06.
  101. ^ Larabel, Michael (2025-08-06). "VIA's Linux TODO List... Maybe Look Forward To 2011?". Phoronix. Retrieved 2025-08-06.
  102. ^ VIA's Open Linux Graphics Driver Has Been Defenestrated Phoronix, January 06, 2011 (article by Michael Larabel)
  103. ^ "Libdlo". Retrieved 16 November 2017.
  104. ^ "DisplayLink Releases Linux Source Code for its USB Graphics Processors" (Press release). DisplayLink. 2025-08-06. Retrieved 2025-08-06.
  105. ^ AMD's Hiring Another Open-Source Driver Developer Phoronix, December 11, 2010 (article by Michael Larabel)
  106. ^ It's Fedora Graphics Test Week Phoronix, February 22, 2011 (article by Michael Larabel)
  107. ^ "Home of Project VGA, the low budget, open source, VGA compatible video card". 090503 wacco.mveas.com
  108. ^ "Linux Fund: OGD1". Open Graphics Project. 2025-08-06. Retrieved 2025-08-06.
  109. ^ Bourdeauducq, Sebastien (June 2010). "A performance-driven SoC architecture for video synthesis" (PDF). Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  110. ^ "Nyuzi is an experimental GPGPU processor". GitHub. June 2021.
  111. ^ "SOC Test Environment". GitHub.
  112. ^ "Running on Terasic DE2-115 FPGA board". GitHub.
  113. ^ "Project IceStorm Homepage". 21 January 2022.
  114. ^ "Project Trellis Repository". GitHub. 30 May 2021.
  115. ^ "SymbiFlow Homepage".
[edit]
614是什么星座 精索静脉曲张什么症状 什么是科学 生加一笔是什么字 来月经喝什么好
小儿消化不良吃什么药最好 什么叫高危性行为 五花八门是指什么生肖 勾心斗角是什么生肖 大肠杆菌属于什么菌
皮肤黄适合穿什么颜色的衣服 小娇妻是什么意思 pc是什么材质 人参片泡水喝有什么功效和作用 跟腱炎挂什么科
乳腺是什么科 性激素检查是查什么 自身免疫性胃炎是什么意思 吃什么水果能长高 补气血吃什么药效果好
二哥是什么意思dajiketang.com 火水是什么hcv9jop3ns4r.cn hold住是什么意思hcv9jop4ns5r.cn 男朋友有什么用bjhyzcsm.com 对牛弹琴代表什么生肖hcv8jop4ns6r.cn
吃什么油好jinxinzhichuang.com puella是什么牌子衣服hcv8jop2ns4r.cn 入港是什么意思hcv9jop4ns3r.cn 胰腺炎是什么hcv8jop0ns5r.cn 花圃是什么意思hcv9jop4ns2r.cn
梦见穿袜子是什么意思hcv8jop4ns2r.cn 死有余辜什么意思hcv9jop4ns8r.cn 伤口发炎用什么药wzqsfys.com 时间像什么hcv8jop4ns7r.cn 属猴是什么命clwhiglsz.com
近亲为什么不能结婚hcv9jop8ns0r.cn 黄历冲生肖是什么意思hcv9jop1ns3r.cn 脸上突然长痣是什么原因hcv9jop6ns2r.cn 2016年属什么hcv7jop5ns2r.cn 屈臣氏是卖什么的dajiketang.com
百度