24

How to OpenGL on Linux Platform Without X-Window System, can I send OpenGL Graphics Directly to Framebuffer Device?

There Is Project Named DirectFB (Direct FrameBuffer). With DirectFB We can do this but DirectFB needs for driver for each hardware and I want to user a graphic card that only have Linux driver.

Braiam
  • 1
  • 11
  • 47
  • 78
user366250
  • 401
  • 2
  • 4
  • 5
  • 2
    Why do you want to avoid X? If you need OpenGL you really kinda need X... If it's just "I want it to go as fast as possible" you don't need to get rid of X, just don't start a compositor or desktop environment and only run your app inside X. Also if it is "I want speed" X is very unlikely to be the bottleneck since DRI rendering pretty much bypasses it entirely. – Spudd86 Jun 16 '10 at 13:58
  • 5
    You Know , When u start the x i take a lot of seconds to loading and its not suitable for embedded platforms – user366250 Jun 16 '10 at 18:54
  • related http://stackoverflow.com/questions/3326641/opengl-without-x-org-in-linux – Ciro Santilli OurBigBook.com Aug 14 '16 at 15:11

5 Answers5

9

This is how i did it in my ubuntu 11.04 in detail: 1- Install the dependencies using the command:

sudo apt-get install xutils-dev libpciaccess-dev x11proto-dri2-dev x11proto-gl-dev libxdamage-dev libxfixes-dev

2- The mesa library needs libdrm version >= 2.4.24 which is not available in the ubuntu 11.04 repository (older version is available) so you have to download the source and build it using the following commands:

./configure
make
make install

3-Download mesa library and then compile it using the following commands: ./configure --prefix=install_directory

make realclean
make linux-fbdev
sudo make install

be careful when you choose the install_directory so that you don't overwrite the system's mesa library. after that compile your application using the options : -lGL -lOSMesa -ldl -L'install_directory/lib' -I'install_directory/include'

Fady Mohamed Othman
  • 1,889
  • 1
  • 15
  • 26
6

Apparently is possible to have SDL running without X.

Basically, your kernel should have framebuffer support and you could use SDL on top of DirectFB.

These threads are ok:

http://lists.libsdl.org/pipermail/sdl-libsdl.org/2006-October/058305.html

http://forums.libsdl.org/viewtopic.php?t=4079

karlphillip
  • 92,053
  • 36
  • 243
  • 426
  • So which library among above proposed (directFB, SDL) provides OpenGL interface/implementation? None... Mesa does. – plesiv Aug 04 '14 at 13:15
4

As you said, you need a driver to do this. 99.9% of all Linux graphics drivers use X11, so unless you have a DirectFB OpenGL driver for your hardware, you are stuck with using X11.

Dr. Snoopy
  • 55,122
  • 7
  • 121
  • 140
  • my video chipset is Intel GM855 , this chipset has normal Linux Driver for X . could it be used with DirectFB – user366250 Jun 15 '10 at 21:02
  • so what can i do ? did u see MyOS X-Less ? http://www.geocities.com/ze_aks/myos.html – user366250 Jun 15 '10 at 23:18
  • Why do you want to not use X11? – Dr. Snoopy Jun 16 '10 at 15:10
  • The Main Reason For X-Less Is Speed , I want Use Embedded Version Of Linux Kernel On Embedded Platform . The Linux Kernel with Lot Of Stuff Will Load 3 Sec After Bootloader Start . But If i use X More Seconds will be lost , for example the startx command will take about 10 seconds to load the x Completely . – user366250 Jun 16 '10 at 18:46
  • @MatiasValdenegro It looks like the links in the comments here have decayed, why not see if you can wayback the links or quote the relevant text and summarize the comments in your answer so they can be deleted (please flag). – Russia Must Remove Putin Jul 29 '17 at 22:46
  • @user366250 Fair enough. Have you looked into EGL? https://en.wikipedia.org/wiki/EGL_(API) -- this lists "AIGLX – an attempt to accelerate GLX". I have basically no experience with embedded programming, but this feels like an XY problem unless you're either the first to experience this issue or the first to tackle it. Otherwise there must be some optimization or alternative that beats rolling your own. – John P Oct 03 '17 at 19:14
  • Someone should make a driver, then. – Brōtsyorfuzthrāx Aug 25 '21 at 02:38
0

I use the SDL (Simple Direct Media Layer) for OpenGL programming in Linux. This site has some nice tutorials to get you set up. One advantage of using SDL is that it will port across platforms, so once you get something running on Linux, it'll transfer right over to Windows so long as you have SDL installed there.

Rich
  • 12,068
  • 9
  • 62
  • 94
0

You can use Mesa for framebuffer-based software rendering.

genpfault
  • 51,148
  • 11
  • 85
  • 139