I'm making a 3D rendering addon for Blender which is GPL 2/3 code that needs to communicate with non-GPL compatible library that does the rendering. I need some of this communication to be as fast as possible since this renderer provides real-time speed which I presume would be lost just because of final image transfer with e.g. socket based communication. Additionally, all renderers would benefit from users not having unnecessary slowdowns.


I have currently addon code that dynamically links to my shared library but I can't distribute that addon without making the library GPL compatible which is not possible currently.

So I am planning to use socket communication to share data between the addon and the renderer without dynamic linking. However, to speed up image download from renderer to Blender and maybe some other functions, I am considering the possibility of using GPL2/3 System Library exception to dynamically link against libGL, which can then use my GL driver at runtime to share some data with GL commands. This would put my renderer on equal footing with all proprietary OpenGL drivers in terms of optimal ways of interfacing with Blender.

Potential issues

Dynamically linking to libGL should satisfy GPL system library exception.

OpenGL driver here wouldn't necessarily be installed system wide however that should not be a problem since as I understand it GPL3 allows to even provide that driver with the distribution while GPL2 does not.

However, this OpenGL driver could run alongside a different OpenGL driver controlling the GPU. I'm not sure if this poses some kind of issue with GPL.

Also, technically, with this setup I could run all rendering inside the same process as Blender through that dynamic linking to libGL. I'm not sure if this poses an issue with GPL.

My question

Would this setup somehow violate GPL terms and thus not be viable or maybe be unadviced due to other reasons?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.