I am debugging/profiling my OpenGL 4.5 application using Nsight Graphics 2018.6.0.0 on Windows. When I start the application an alert window pops up titled “Unknown object detected” and states “An unknown object was detected being passed to an API call” followed by some more text. About a dozen of these alerts pop up before my application starts, at which point I am able to capture a frame with Nsight.
I am confused by a couple things here. First, the “Report Unknown Objects” option is listed under D3D options in the “Additional options” section (and it is suggested I use that option in the alert message), but I am using OpenGL, not D3D. (And there is no such option in the OpenGL section.)
Second, is there an explanation of what an “unknown object” could be? Does this mean I’m making an invalid API call, and if so can I get diagnostic info on what calls are triggering this error?
Thanks.
I would also add that my application uses the Oculus PC SDK, which is perhaps relevant here?
Hi Turitzin,
Sorry that you are running into these issue. I’ve been circling with the engineering team internally on this.
The unknown object detection was a new feature added in 2018.6. This was intended to guard against applications (or middleware) doing things that are incompatible or unexpected with Nsight Graphics. In your case, it could be that the Oculus PC SDK is doing this, or perhaps something at a different level, given that your application is pure OpenGL.
To answer your first question, the “additional options” will still take effect, even though you are using OpenGL. Our interceptor doesn’t really have a notion of API, so potentially the Oculus PC SDK is using something like: NvAPI_D3D11_RegsiterDeviceFromOGL.
To answer your second question, we will need to know a bit more about your use case:
What system, GPU, and driver are you running?
What version of the Oculus PC SDK are you using?
Do you see any incompatibilities come up in the Output Messages log within Nsight Graphics?
Lastly, with the report Unknown Objects option turned on, does the application still run? Or does it crash?
Thanks!
Seth
Hi Seth, thanks for your response, and the additional details!
I looked into this a bit more, and it does appear to be due to the Oculus PC SDK.
First to answer your questions: I am using Oculus PC SDK version 1.30.0. Windows 10. NVIDIA GeForce GTX 980 GPU with driver version 416.94. I am not seeing any messages in Nsight’s Output Messages log other than the ones about an unknown object being detected.
Turning off the “Report Unknown Objects” option does remove the alert messages. I am able to debug and profile my application without crashes.
Okay, back the why this looks to be due to the Oculus PC SDK. I tried debugging the “OculusRoomTiny” example application that is distributed with the Oculus PC SDK and and got the same “unknown object” alerts as I get with my application. Through trial and error of removing code from the sample app and re-running with Nsight I was able to determine that usage of the texture id’s returned by ovr_GetTextureSwapChainBufferGL() and ovr_GetMirrorTextureBufferGL() is what is causing the Nsight alerts. It’s impossible to build a VR app using the Oculus PC SDK and OpenGL without the first call in particular, because that is what gets access to the eye buffers that must be rendered to
In any event, I am guessing these errors are harmless.
Mike