PS3 GPU DRM Driver: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
Line 1: Line 1:
[[Category:OtherOS]]
[[Category:OtherOS]]
=Introduction=


* You can stop reading here if you think DRM has something common with games or piracy :)
To fully exploit the PS3 graphics potential, developer really need a proper GPU DRM driver for PS3. The problem is that Linux kernel DRM framework is very complex and not well documented.
* We really need a proper GPU DRM driver for PS3.
* The problem is that Linux kernel DRM framework is very complex and not well documented.


=Linux Kernel DRM Framework=
= Linux Kernel DRM Framework =


==KMS==
== Kernel Mode Setting (KMS) ==


* CRTC -> Encoder -> Connector
* CRTC -> Encoder -> Connector
* PS3 has 2 connectors: HDMI and AV multi
* PS3 has two video out connectors: HDMI and AV multi
* Use PS3 AV Manager to set resolution
* Use PS3 AV Manager to set resolution
* '''ps3av_cmd_video_get_monitor_info''' can be used to get current supported resolutions
* '''ps3av_cmd_video_get_monitor_info''' can be used to get current supported resolutions
* It seems that head A is connected to HDMI connector.
* It seems that head A is connected to HDMI connector.


==TTM==
== Translation Table Manager (TTM) ==
 
TTM is short for Translation Table Maps (?or Manager?) which was originally a new DRM map type that could be flipped into and out of a general translation table; for example an AGP or PCI Gart. Since then it has, a bit misleading, become the name of the functionality of the DRM unified memory manager for display memory. A white-paper describing the DRM memory manager can be found [https://web.archive.org/web/20070703024247/http://www.tungstengraphics.com/mm.pdf here].


* Manages memory: video memory, GART memory and system memory.
* Manages memory: video memory, GART memory and system memory.
* Nouveau DRM driver e.g. manages video memory globally per device. We cannot do it because each context has its own video memory.
* Nouveau DRM driver e.g. manages video memory globally per device. We cannot do it because each context has its own video memory.


=Milestones=
= Milestones =


# Create initial driver infrastructure (work in progress)
# Create initial driver infrastructure (work in progress)
Line 31: Line 30:
# Port some 3D open-source game to PS3 GPU DRM, e.g. quake or doom
# Port some 3D open-source game to PS3 GPU DRM, e.g. quake or doom


=Links=
= Links =


==DRM User-Space==
== DRM User-Space ==


* http://blog.mecheye.net/2012/08/lets-make-a-low-level-part-1-getting-things-going/
* http://blog.mecheye.net/2012/08/lets-make-a-low-level-part-1-getting-things-going/


==DRM Kernel-Space==
== DRM Kernel-Space ==


* http://www.ideasonboard.org/media/drm/
* https://web.archive.org/web/20141117064052/https://www.ideasonboard.org/media/drm/
* http://lxr.free-electrons.com/source/drivers/gpu/drm/nouveau/
* http://lxr.free-electrons.com/source/drivers/gpu/drm/nouveau/
* http://lxr.free-electrons.com/source/drivers/gpu/drm/cirrus/
* http://lxr.free-electrons.com/source/drivers/gpu/drm/cirrus/
Line 45: Line 44:
* http://lxr.free-electrons.com/source/drivers/staging/omapdrm/
* http://lxr.free-electrons.com/source/drivers/staging/omapdrm/
* http://git.kernel.org/?p=linux/kernel/git/mattst88/glint.git;a=tree;f=drivers/gpu/drm/glint
* http://git.kernel.org/?p=linux/kernel/git/mattst88/glint.git;a=tree;f=drivers/gpu/drm/glint
* http://www.x.org/wiki/ttm
* https://web.archive.org/web/20130128022722/http://www.x.org/wiki/ttm
* http://lists.freedesktop.org/archives/dri-devel/2010-April/000183.html
* http://lists.freedesktop.org/archives/dri-devel/2010-April/000183.html
* http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg50049.html
* http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg50049.html
* http://permalink.gmane.org/gmane.comp.video.dri.devel/47889
* http://permalink.gmane.org/gmane.comp.video.dri.devel/47889
* https://web.archive.org/web/20070703024247/http://www.tungstengraphics.com/mm.pdf
* https://www.kernel.org/doc/html/latest/gpu/i915.html
* https://www.kernel.org/doc/html/latest/gpu/drm-internals.html


==PS3 Kernel Drivers==
== PS3 Kernel Drivers ==


* http://lxr.free-electrons.com/source/arch/powerpc/include/asm/ps3av.h
* http://lxr.free-electrons.com/source/arch/powerpc/include/asm/ps3av.h
* http://lxr.free-electrons.com/source/drivers/ps3/ps3av.c
* http://lxr.free-electrons.com/source/drivers/ps3/ps3av.c
* http://lxr.free-electrons.com/source/drivers/video/ps3fb.c
* http://lxr.free-electrons.com/source/drivers/video/ps3fb.c


{{Linux}}<noinclude>[[Category:Main]]</noinclude>
{{Linux}}<noinclude>[[Category:Main]]</noinclude>

Latest revision as of 23:55, 6 May 2025


To fully exploit the PS3 graphics potential, developer really need a proper GPU DRM driver for PS3. The problem is that Linux kernel DRM framework is very complex and not well documented.

Linux Kernel DRM Framework[edit | edit source]

Kernel Mode Setting (KMS)[edit | edit source]

  • CRTC -> Encoder -> Connector
  • PS3 has two video out connectors: HDMI and AV multi
  • Use PS3 AV Manager to set resolution
  • ps3av_cmd_video_get_monitor_info can be used to get current supported resolutions
  • It seems that head A is connected to HDMI connector.

Translation Table Manager (TTM)[edit | edit source]

TTM is short for Translation Table Maps (?or Manager?) which was originally a new DRM map type that could be flipped into and out of a general translation table; for example an AGP or PCI Gart. Since then it has, a bit misleading, become the name of the functionality of the DRM unified memory manager for display memory. A white-paper describing the DRM memory manager can be found here.

  • Manages memory: video memory, GART memory and system memory.
  • Nouveau DRM driver e.g. manages video memory globally per device. We cannot do it because each context has its own video memory.

Milestones[edit | edit source]

  1. Create initial driver infrastructure (work in progress)
  2. Implement unaccelerated framebuffer console
  3. Add hardware acceleration to framebuffer console
  4. Implement IOCTLs for user-space applications
  5. Add PS3 GPU DRM support to libdrm and implement tests for it
  6. Implement X11 driver for PS3 GPU DRM
  7. Port some 3D open-source game to PS3 GPU DRM, e.g. quake or doom

Links[edit | edit source]

DRM User-Space[edit | edit source]

DRM Kernel-Space[edit | edit source]

PS3 Kernel Drivers[edit | edit source]