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.