BBB Direct Rendering Infrastructure (/dev/dri/*)

Skip to first unread message

John B

Jun 14, 2018, 3:58:32 PM6/14/18
to BeagleBoard
I have an application that previously used /dev/dri/card0 to render using the DRM_CAP_DUMB_BUFFER capability. (Jessie/Debian Kernel 3.8.x).  Having recently upgraded to Stretch/Debian Kernel 4.14.x, it seems this program has stopped working indicating that the DRM_CAP_DUMB_BUFFER capability is not present.

After some looking around in /dev, I noticed that there are now two rendering devices (cards): /dev/dri/card0 (minor dev 0) and /dev/dri/card1 (minor dev 1).  (Previously, there was /dev/dri/card0 (minor dev 0) and /dev/dri/controlD64 (minor dev 64)).  I understand the concept of the controlDxx render node devices may have gone by the wayside from reading various forums.

So,I tried using /dev/dri/card1 and lo and behold, that worked fine, that is, it supports the DUMB_BUFFER capability.

I guess my question is, why?  I'm sure the DRI has changed somewhat between 3.8.x and 4.14.x, but I searched around and could not find any documentation on what the different devices are in /dev/dri.  The kernel documentation tree (admin-guide) has devices.txt which indicates simply:

 226 char   Direct Rendering Infrastructure (DRI)
          0 = /dev/dri/card0        First graphics card
          1 = /dev/dri/card1        Second graphics card

Now, I don't believe the BBB has 2 graphics cards - unless they now broke the graphix processor and frame buffer into their own devices?  So, this begs the question: what is the difference between card0 and card1, and is there any documentation on this anywhere?

My immediate problem is solved by using /dev/dri/card1, but it would be nice to learn why it was changed and why.

Thank you so much if anyone has any input on this.


Reply all
Reply to author
0 new messages