Share via


OpenGL Version in 1.1 when program are executed inside a Service with DCH Graphic Driver

Question

Friday, December 6, 2019 6:32 PM

    Hello,

Since the introduction of DCH Driver in Windows 10, I have problem with my program which are executed inside a service.

The OpenGL driver inside the service is always "GDI Generic driver" with version OpenGL 1.1.

Outside the service, the version is 4.6 (I used NVidia Quadro, but it's the same problem with other graphic card).

With WHQL driver, I do not have the problem, but the problem is that I'm not able anymore to installed this WHQL driver on new Windows 10 version.

Is it a bug inside Windows? Or is there a way to configure the service in order to use the real graphic driver instead of the generic one?

I hope someone will help me, because for the moment, I need to keep old version of the driver and Windows 10 to be sure that OpenGL version is > 1.1 inside Windows Services application.

Context of usage:

I used Teamcity as a build server, and some UnitTest need OpenGL are launch inside Teamcity Agent which are running under a service (using a specific account - but same problem with system account).

All replies (4)

Friday, December 6, 2019 7:21 PM

are you sure the test is running inside a service?
session 0 isolation should prevent a service from displaying UI, so I wonder if using OpenGL or DirectX is even supported.


Saturday, December 7, 2019 12:07 AM

Yes, I'm 100% sure that it's inside the service. I do not display application/UI, the Unit test just create some offscreen OpenGL context & Frame buffer object to make some rendering.

And it works perfectly on PC (inside Windows Service) with old version of the nvidia driver (WHQL).

Also note, that I set the NVidia  Graphic card as the default card in the BIOS. But even with that settings, the problem is present.

I have create a very small task which just ask for the OpenGL version.

Here the result when I launch it inside a Service and WHQL driver :

"Display available Graphic Cards:"
Name                       

NVIDIA Quadro P2000        

Intel(R) UHD Graphics 630  




run "glewinfo.exe" 

    GLEW Extension Info


GLEW version 2.1.0
Reporting capabilities of pixelformat 1
Running on a Quadro P2000/PCIe/SSE2 from NVIDIA Corporation
OpenGL version 4.6.0 NVIDIA 411.63 is supported

GL_VERSION_1_1:                                                OK 


GL_VERSION_1_2:                                                OK 

  glCopyTexSubImage3D:                                         OK
  glDrawRangeElements:                                         OK
  glTexImage3D:                                                OK
  glTexSubImage3D:                                             OK

GL_VERSION_1_2_1:                                              OK 


GL_VERSION_1_3:                                                OK 

  glActiveTexture:                                             OK  etc.

And here the result, on PC with the last nvidia driver, DCH, on Windows 10 >= 1803:

"Display available Graphic Cards:"
Name                       
NVIDIA Quadro P2000        
Intel(R) UHD Graphics 630  


run "glewinfo.exe"

    GLEW Extension Info


GLEW version 2.1.0
Reporting capabilities of pixelformat 2
Running on a GDI Generic from Microsoft Corporation
OpenGL version 1.1.0 is supported

GL_VERSION_1_1:                                                OK 


GL_VERSION_1_2:                                                MISSING 

  glCopyTexSubImage3D:                                         MISSING
  glDrawRangeElements:                                         MISSING
  glTexImage3D:                                                MISSING
  glTexSubImage3D:                                             MISSING

GL_VERSION_1_2_1:                                              MISSING 


GL_VERSION_1_3:                                                MISSING 

  glActiveTexture:                                             MISSING  etc.

As you see, glewinfo is perfectly working before the new DCH driver introduce on Windows 10 1803.

I hope this information could help. I try so many tricks to try to install WHQL driver on this new Windows version, but it's not possible...

So my only chance is to find a way to have the right driver loaded inside the Windows Service, like it was the case before the version 1803.

Also note that in RDP all is working perfectly well. I have the right driver and OpenGL version.


Saturday, December 7, 2019 6:39 AM

It is only when a system was setup with DCH drivers you can no longer switch to standard drivers,
so has nothing to do with the Windows version directly (I still have non DCH drivers on Windows 10 1909)

"run "glewinfo.exe""
so the code accessing OpenGL is not running in the service, but a separate process.

"Running on a GDI Generic from Microsoft Corporation" so it doesn't even detect the NVidia driver.

You could ask in the NVidia forums.


Saturday, December 7, 2019 9:49 AM

glewinfo.exe launch inside a session with user X, is working and find NVidia driver.

But glewinfo.exe launch inside a service (using same user account X) do not find NVidia driver. So when the process is hosted/run under service, the Windows behavior is different.

Note that the problem is the same is I disable the NVidia card and do it with the Intel graphic driver. I suspect that the problem is more related with the new Version of Windows and DCH drivers.