i-rinat / freshplayerplugin

ppapi2npapi compatibility layer
MIT License
728 stars 52 forks source link

GLX...What? #339

Closed CartridgeGen closed 7 years ago

CartridgeGen commented 8 years ago

I've looked left and right for any GL dependency and I can't find none, other than glX calls... I'm running ARM Octa Core ARMV7 HF Mali T628 and I can't for the life of me, get the program to either compile right or run right. If it compiles, it does not run, it detects it but it does not run with this error : symbol lookup error: /home/odroid/libfreshwrapper-flashplayer.so: undefined symbol: glXQueryVersion I'm aware that is a GL call and not ES... If I remove or put GLES2 on, they both don't compile with the same error but I still get my linked and built .so library. I've put everything to "FALSE" and still the same. I also get these compiler errors glXCreatePixmap glXDestroyPixmap undefined reference...

When I say looked for any GL Deps, I mean looking through the source to see if it asks for -lGL or pkg_config in cmakelists GL is not mentioned but GLES2...What? I've tried someone else's port of the fresh plugin and that one also does not work. It worked the first time I compiled it way long ago when the fresh plugin started but I was only getting a black screen, nonetheless it worked even if it was black. Now I don't understand why it's not working...

i-rinat commented 8 years ago

There are OpenGL, and OpenGL|ES 2, which is embedded version of desktop OpenGL. Some calls are missing, but there is a slightly different language for shaders. And there are also GLX and EGL, which are compatibility layers. In order to use any flavor of OpenGL, one must initialize graphics context. GLX and EGL — are ways to do that.

There was a time, when freshplayerplugin used EGL and OpenGL|ES 2 APIs directly. Perhaps then it could work on a ARM SoC, which are usually only have EGL and OpenGL|ES 2 available. In ideal world, that would be a solution. But it turned out, that EGL implementation is a mess. Also proprietary nVidia drivers were not-so-friendly with GLES2 and EGL. So I ended up using GLX, desktop OpenGL, and shader translator.

if it asks for -lGL

It asks, here: (link).