Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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.