1

I'm currently in the process of finding a nice GUI framework for my new project - and Kivy looks quite good.

There are many questions here (like this one) about Kivy requiring OpenGL >2.0 (not accepting 1.4) and problems arising from that. As I understood, it's the graphics drivers thing to provide a decent OpenGL version.

I'm concerned what problems I'll have deploying my app to users having a certain configuration, that they will not be willing or able to have OpenGL >2.0 on their desktop.

First off, deploying on Windows in regard to OpenGL would not be a problem.. Good support there.

But I'm specifially concerned about people (like me) having an Ubuntu installation (14.4 LTS) with the latest Nvidia binary driver from Ubuntu. It's just the best driver currently, having the best performance (still far superior to nouveau IMHO)..

And it seems (or am I wrong? that would be great) that this driver only provides OpenGL 1.4

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions: [...]

So my question is two-fold

  1. I'm I maybe wrong the nvidia binary driver only supporting OpenGL 1.4?
  2. If yes, doesn't that exclude many users having a quite common configuration (all Ubuntu users using Nvidia cards) from people able to use my Kivy application? Any way to circumvent that?

I know OpenGL 1.4 is silly old stuff, but the driver is current and the hardware too (GTX 770, quite a beast..)..

Installed driver:

root@host:/home/user# apt-cache policy nvidia-331-updates
nvidia-331-updates:
Installed: 331.38-0ubuntu7
Candidate: 331.38-0ubuntu7
Version table:

Nvidia information:

Version:    331.38
Release Date:   2014.1.13 

I really hope I'm wrong..

EDIT There has been said 1.4 is the GLX version, not the OpenGL version.. I've seen that now - but I thought it's 1.4 because when I try to execute an example from the dist, I get this error:

vagrant@ubuntu-14:/usr/local/share/kivy-examples/guide/firstwidget$ python 1_skeleton.py 
[WARNING] [Config      ] Older configuration version detected (0 instead of 10)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in /home/vagrant/.kivy/logs/kivy_14-06-28_0.txt
[INFO   ] Kivy v1.8.1-dev
[INFO   ] [Python      ] v2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2]
[INFO   ] [Factory     ] 169 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[INFO   ] [Window      ] Provider: pygame(['window_egl_rpi'] ignored)
libGL error: failed to load driver: swrast
[INFO   ] [GL          ] OpenGL version <1.4 (2.1.2 NVIDIA 331.38)>
[INFO   ] [GL          ] OpenGL vendor <NVIDIA Corporation>
[INFO   ] [GL          ] OpenGL renderer <GeForce GTX 770/PCIe/SSE2>
[INFO   ] [GL          ] OpenGL parsed version: 1, 4
[CRITICAL] [GL          ] Minimum required OpenGL version (2.0) NOT found!

OpenGL version detected: 1.4

Version: 1.4 (2.1.2 NVIDIA 331.38)
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 770/PCIe/SSE2

Try upgrading your graphics drivers and/or your graphics hardware in case of problems.

So it actually parses my OpenGL version as 1.4..

EDIT 2: I'm running Kivy from github (master branch) as of today (28th june), so that should be fairly new ;-)

Community
  • 1
  • 1
narcoticfresh
  • 257
  • 4
  • 10

2 Answers2

3

That's not the OpenGL version! It's the GLX version. AFAIK GLX 1.4 is the latest release. You can use the glxinfo command to check all version numbers. On my machine I get:

$glxinfo | grep 'GLX version'
GLX version: 1.4
$glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile 
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.20
OpenGL extensions:

See also How can I check my OpenGL version? for further details.

Summary: you don't have to worry about OpenGL 2.0 compatibility. Almost every device has support for OpenGL 2.0 nowadays. For example, only 0.1% of Android devices supports only OpenGL version 1.1.

Community
  • 1
  • 1
Bakuriu
  • 98,325
  • 22
  • 197
  • 231
  • 1
    To be honest, I would estimate that only about 0.1% of Android devices support OpenGL 2.0 too. Generally Android devices implement OpenGL ES. – Andon M. Coleman Jun 22 '14 at 12:34
  • @AndonM.Coleman OpenGL Es 2.0 is the counterpart of OpenGL 2.0 for mobile. I pointed to that data because it's the only data I remembered I could provide. I don't know of other public statistics about OpenGL. – Bakuriu Jun 22 '14 at 12:37
  • 2
    That may be, but OpenGL ES 2.0 != OpenGL 2.0. It is somewhere in-between OpenGL 2.1 and 3.0 feature set wise (~GLSL 1.20 syntax from GL 2.1 and FBOs from GL 3.0). And OpenGL ES 1.1 is very roughly OpenGL 2.0 without GLSL or legacy GL features that are not hardware accelerated; ***much*** different from OpenGL 1.1. – Andon M. Coleman Jun 22 '14 at 12:40
  • Hi Bakuriu, thanks for your reply and sorry for my late reply.. I edited my question to include the error message I get from running an example - this letting me to believe I have OpenGL 1.4 and disabling me for using Kivy as it dies after that ;-) – narcoticfresh Jun 28 '14 at 08:20
  • @narcoticfresh According to [this](https://bbs.archlinux.org/viewtopic.php?id=155058) thread `swrast` is a software driver used as a fallback when none video driver is found. They say that you might solve this installing some nvidia related packages (however that's an archlinux thread. Not sure how to achieve the same effect on Ubuntu). So the problem probably isn't related to kivy but to your installation. As I already stated *every* computer built in the last quite a few years *does* support OpenGl 2.0 But if the installation is broken, you can't do much. – Bakuriu Jun 28 '14 at 16:25
3

I've answered a very similar question before, here. The answer is pasted below for reference:

Kivy, for which OpenGL 2.0 seems to be mandatory.

Strictly, Kivy targets OpenGL ES 2.0 as the minimum requirement. This is not the same as OpenGL 2.0.

Well, the question is simple. At home I have three computers of which two are quite old with integrated graphics cards, which do not support OpenGL 2.0.

This is fairly unusual nowadays. Even mobile devices have almost all supported it for years (where to be clear, 'it' is the opengl es 2 features that kivy relies on).

The only places you tend to see lack of support are older machines with integrated graphics, like yours, though I have no statistics on how common these are. Any machine with a 'proper' graphics card, or integrated graphics from the last few years (e.g. intel's integrated with sandy bridge etc.), will almost certainly work fine.

I've seen occasional problem in newer machines, e.g. some netbooks with particularly poorly supported graphics chips, but these are very much the exception rather than the norm.

Edit: For reference, Google seems to claim that 99.9% of devices support OpenGL ES 2 (at the time of writing).

Overall, it's extremely unlikely that you (or indeed, anyone who uses your application) would have any problems related to this.

inclement
  • 29,124
  • 4
  • 48
  • 60