Free and open-source graphics device driver: Difference between revisions

Content deleted Content added
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.3) (Whoop whoop pull up - 12936
Citation bot (talk | contribs)
Add: date. | Use this bot. Report bugs. | Suggested by Whoop whoop pull up | #UCB_webform 357/583
Line 40:
The mobile sector presents a different situation. The functional blocks (the [[application-specific integrated circuit]] display driver, 2- 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 player]]s require a display driver that accelerates video decoding, but do 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 ([[Analog television|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 percent of [[smartphone]]s sold worldwide were running a version of [[Android (operating system)|Android]],<ref>{{cite web | url = https://techcrunch.com/2013/08/07/android-nears-80-market-share-in-global-smartphone-shipments-as-ios-and-blackberry-share-slides-per-idc/ | title = Android Nears 80% Market Share In Global Smartphone Shipments, As iOS And BlackBerry Share Slides, Per IDC| date = 7 August 2013}}</ref> 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 [[BitTorrent (software)|mainline]], such as the [[Atomic Display Framework]] (ADF).<ref>{{cite web |url=https://lwn.net/Articles/565422/ |title=Atomic Display Framework}}</ref> ADF is a feature of 3.10 AOSP kernels which provides a [[Direct Rendering Manager#DMA Buffer Sharing and PRIME|dma-buf]]-centric framework between Android's hwcomposer [[HAL (software)|HAL]] and the kernel driver. ADF significantly overlaps with the [[Direct Rendering Manager|DRM]]-[[Mode setting|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 [[Hybris (software)|libhybris]] harness Android device drivers to run on Linux platforms other than Android.
 
== Software architecture ==
Line 49:
# A Linux kernel component [[KMS driver]] (the [[display controller]] driver)
# A libDRM user-space component (a wrapper library for DRM system calls, which should only be used by Mesa 3D)
# 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 (computer science)|marshalling]] is possible. Mesa 3D is the only free and open-source implementation of [[OpenGL]], [[OpenGL ES]], [[OpenVG]], [[GLX]], [[EGL (API)|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 (programming language)|C]], and an unmaintained tracker for Direct3D versions 10 and 11 is written in [[C++]].<ref>{{cite web|url=http://lists.freedesktop.org/archives/mesa-dev/2013-July/041900.html|title=Direct3D 9 state tracker|date=16 July 2013 |access-date=15 November 2017|archive-url=https://web.archive.org/web/20130720011019/https://lists.freedesktop.org/archives/mesa-dev/2013-July/041900.html|archive-date=20 July 2013|url-status=live}}</ref> [[Wine (software)|Wine]] has Direct3D version 9. Another Wine component translates Direct3D calls into OpenGL calls, working with OpenGL.
# [[Device Dependent X]] (DDX), another 2D graphics device driver for [[X.Org Server]]
 
Line 80:
*Radeonsi supports all [[Graphics Core Next]]-based GPUs: [[Radeon HD 7000 Series|HD 7000]], [[Radeon HD 8000 Series|HD 8000]] and [[AMD Radeon Rx 200 Series|Rx 200]] (Southern Islands, Sea Islands and Volcanic Islands).
 
An up-to-date feature matrix is available,<ref>{{cite web|url=http://xorg.freedesktop.org/wiki/RadeonFeature|title=Radeon Feature|access-date=15 November 2017}}</ref> and there is support for [[Video Coding Engine]]<ref name="VCE">{{cite web |url=http://lists.freedesktop.org/archives/mesa-dev/2014-February/053203.html |title=initial VCE support in Linux kernel and in the Mesa driver|date=4 February 2014 }}</ref> and [[Unified Video Decoder]].<ref>{{cite web |url=http://lists.freedesktop.org/archives/dri-devel/2014-February/054159.html |title=drm-next-3.15 Feb 18|date=18 February 2014 }}</ref><ref>{{cite web |url=http://lists.freedesktop.org/archives/dri-devel/2014-March/054999.html |title=drm-next-3.15 Mar 04|date=4 March 2014 }}</ref> 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).<ref>{{cite web |url=http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/ |title=AMD Developer Guides |url-status=dead |archive-url=https://web.archive.org/web/20130716090237/http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/ |archive-date=2013-07-16 }}</ref><ref>{{cite web |url=http://www.x.org/docs/AMD/ |title=Documentation provided by AMD}}</ref><ref>{{cite web |url=http://www.botchco.com/agd5f/?p=58 |title=AMD 3D Documentation list |url-status=dead |archive-url=https://web.archive.org/web/20131007021913/http://www.botchco.com/agd5f/?p=58 |archive-date=2013-10-07 }}</ref> Documentation began to be gradually released in 2007.<ref>{{cite web |url = https://lwn.net/Articles/248227/ | title = AMD to open up graphics specs |publisher=[[LWN.net]] |date=2007-09-05 |access-date=2014-07-15}}</ref><ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=NjA0Ng |title=AMD: GPU Specifications Without NDAs! |date=2007-09-10 |access-date=2014-07-15}}</ref><ref>{{cite web|url=http://airlied.livejournal.com/50613.html |title=AMD hand me specs on a CD |author=David Airlie |date=2007-09-13 |access-date=2014-07-15 |url-status=dead |archive-url=https://web.archive.org/web/20121022064328/http://airlied.livejournal.com/50613.html |archive-date=2012-10-22 }}</ref>
 
In addition to providing the necessary documentation, AMD employees contribute code to support their hardware and features.<ref name="VCE" />
Line 197:
|publisher=Linaro
|access-date=15 April 2012}}</ref> The driver code was published on [[Gitorious]] "freedreno",<ref>[https://gitorious.org/freedreno/ Freedreno, 15 April 2012] {{webarchive|url=https://web.archive.org/web/20121024233408/https://gitorious.org/freedreno/ |date=24 October 2012 }}</ref>
and has been moved to Mesa.<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=MTMyNTE|title=Mesa/Gallium3D Gets Its First ARM SoC GPU Driver - Phoronix}}</ref><ref>{{cite web |url=http://lists.freedesktop.org/archives/mesa-commit/2013-March/042190.html |title = Mesa (master): r600g: add Richland APU pci ids| date=15 March 2013 }}</ref> In 2012, a working shader assembler was completed;<ref>{{cite web
| url=http://bloggingthemonkey.blogspot.se/2012/07/freedreno-update-first-renders-shader.html
| title=freedreno update: first renders shader assembler!