0
votes

This should be straightforward, but for some reason I can't make it work. I hired a Softlayer Bare Metal Server that comes with an Nvidea Tesla GPU.

I'm remotley executing a program (openScad) that needs OpenGL > 2.0 in order to properly export a PNG file. When I invoke openScad and export a model, I get a 0kb png file as output, a clear symptom that OpenGL > 2.0 support is not present.

In order to make sure that I was running openGL > 2.0 I connected to my server via RD and ran GlView. To my surprise I saw that the server was supporting nothing but openGL 1.1.

After a little research I found out that for standard RD sessions the GPU is not used so it makes sense that I'm only seeing openGL 1.1. The problem is that when I execute openscad remotley, it seems that the GPU is not used either.

What can I do to successfully make the GPU capabilities of my server work when I invoke openscad remotely?

PS: I checked with softlayer support and they are not taking any responsibility

2

2 Answers

4
votes

Most (currently all) OpenGL implementations that use a GPU assume that there's a display system of some sort using that GPU; in the case of Windows that would be GDI. However on a headless server Windows usually doesn't start the GDI on the GPU but uses some framebuffer.

The NVidia Tesla GPUs are marketed as compute-only-devices and hence their driver does not support any graphics functionality (note that this is a marketing limitation implemented in software, as the silicon is perfectly capable of doing graphics). Or in other words: If you can implement your graphics operations using CUDA or OpenCL, then you can use it to generate pictures. Otherwise (i.e. for OpenGL or Direct3D) it's useless.

Note that NVidia is marketing their "GRID" products for remote/cloud rendering.

1
votes

I'm replying because i faced a similar problem in the past; also trying to run an application that needed openGL 4 on a windows server.

windows remote desktop indeed doesn't trigger opengl. However if you use tigervnc instead and then start your openScad application it might recognize your opengl drivers. At least this trick did it for me. (when opening an openGL context in a program it scan's for monitors/RD's attached i pressume).

hope it helps.