NSight 3.0 (final) complains about glTexImage2D with zero texture object on OpenGL 4.2

Hi all, I just upgraded to NSight 3.0 final from the 3.0 RC and I can no longer capture frames with the graphics debugger. The error it reports (both on-screen and if I generate a compatlog) is:

glTexImage2D (Zero texture object not supported): 0x00000001

I have verified that nowhere do I call glTexImage2D while texture object 0 is bound. I’m capturing locally, and my exe is OpenGL 4.2 core-compliant. Capture worked fine with the Nsight 3.0 release candidate.

I’ve checked the release notes at: http://http.developer.nvidia.com/NsightVisualStudio/3.0/Documentation/UserGuide/HTML/Content/Release_Notes_Main.htm and couldn’t find anything relevant to this

I’m out of ideas - any help much appreciated!
Andy

Hi Andy,

Any chance we can take a look at your binary to pinpoint the issue?

ane news from this ? i’v just started debugging my opengl app and have THAT SAME problem (nsight 3.0.0.13150 on NVidia 680M card, latest beta drivers)

Same problem here on a K5000.

Also i get glVertexAttribPointer (Client side vertex arrays not supported).
I checked our GL calls with GLintercept and we never use glVertexAttribPointer without a bound buffer.

Hi guys,

Any chance we could get a binary reproducible of the issue? We were unable to reproduce it internally.

Thanks!

I get this on the latest beta versionWin64_3.1.0.13204 as well

Update:
I removed all calls to glTexParameterf from my program and still get the error!!

@tonyo_au: The new 3.1 build will report both the function with the zero texture bound and the binding that you are attempting to use. Can you report the full error message you are getting?

I’d also recommend you run our compatibility log and post the results here. This will give us more insight into whether there are multiple errors that may be conflating this particular issue. You can run a full compatibility log with the following command (as described in that error popup):

\Monitor\Common\Nvda.Launcher.exe -compatlog c:\nvcompatlog.txt myapp.exe

This is the output from the monitor

I removed the proxy call call that removes the first error. I can’t find the others.

This is the proxy code with c_InternalFormat = GL_RGBA32F c_SourceFormat = RGBA

glTexImage2D(GL_PROXY_TEXTURE_2D,
               0,
               c_InternalFormat,
               p_Width,
               p_Height,
               0,
               c_SourceFormat,
               GL_FLOAT,
               NULL); 


  GLint c_Width = 0;
  glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &c_Width); 
  GLint c_Height = 0;
  glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &c_Height); 
  // did we get an error?
  CHECKOPENGL_PARANOID;

Hi tonyo_au,

I can see why the proxy error is happening. We don’t handle the proxy texture correctly and Nsight triggers an incompatibility. I’m looking into it presently.

With respect to the other issues (glTexParameteri and glTexParameterf), I can’t really say anything without more context on the call. Would it be possible for you to send a binary that I can try reproducing the issue with? If so send me a private message and we can set that up.

I’m also seeing that you are making a call to glCreateShader with GL_COMPUTE_SHADER. Unfortunately compute shaders are GL 4.3 functionality that we do not yet support and even if the other issues were solved you could not enter frame debugging with this functionality in use.

I understand that lack of GL 4.3 support may be a nonstarter for your needs until we support GL 4.3 in a future version. In the meantime, I would like to point out that our performance analysis tool will work with GL 4.3 if you find that you need API tracing and performance analysis.

Hope this helps,

Dan

Hi Dan,
I know Compute Shaders aren’t supported and I can live with that as I have code to by pass them for earlier drivers and the proxys are for debug so they are no problem. Unfortunately my binary requires a lot of support files to run so sending it would be of little use.

I will try a simpler program for you but last release I could not reproduce the errors with a cut down program. This version is a lot more stable - the program would not run at all with your last nSight.

Performance analysis is nice but shader debugging is what I really need. I waste a lot of time tracking down simple errors in a shader just because I can’t see the values it is using.

Hi tonyo_au,

Thank you for attempting to try a simpler program, let me know if you find anything and whether I can help in that regard.

I wanted to note that if you had access to a second system you could do shader debugging on a running (non-paused) application if you use that second system for remote debugging. This kind of shader debugging does not have restrictions on the API functions it supports because pause mode is never entered. You can bring up the list of shaders in use by your (running) application through Nsight > Windows > Shaders List. As an additional benefit remote shader debugging is generally significantly more speedy than local shader debugging.

Dan

I have tried running with a remote connection. I still cannot capture a frame the same error is reported.
I tried viewing Nsight > Windows > Shaders List but has no shaders listed.