[vtkusers] OpenGL errors upon move from 6.3.0 to 7.0.0 - not out of the woods yet

Richard Frank rickfrank at me.com
Sat Feb 27 15:31:58 EST 2016


Hi,

I'm having a different problem now related to rendering an image volume using vtkOpenGLGPUVolumeRayCastMapper.

Tracing through the code I find that a shader fails to compile at line 
79 in vtkShader.cxx

The failure is handled:

// Handle shader compilation failures.
if (!isCompiled)
{
GLint length(0);
glGetShaderiv(handle, GL_INFO_LOG_LENGTH, &length);
if (length > 1)
{
char *logMessage = new char[length];
glGetShaderInfoLog(handle, length, NULL, logMessage);
this->Error = logMessage;
delete[] logMessage;
}
glDeleteShader(handle);
return false;

and the log message is

0(169) : error C1008: undefined variable "g_aspect".0(170) : error C1008: undefined variable "g_aspect".0(171) : error C1008: undefined variable "g_aspect"

later, vtkOpenGLShaderCache::ReadyShaderProgram returns NULL:

// return NULL if there is an issue
vtkShaderProgram *vtkOpenGLShaderCache::ReadyShaderProgram(
vtkShaderProgram *shader)
{
if (!shader)
{
return NULL;
}

// compile if needed
if (!shader->GetCompiled() && !shader->CompileShader())
{
return NULL;
}

the null pointer gets passed up to vtkOpenGLGPUVolumeRayCastMapper at line 2512 and crashes because at line 2514 the null pointer is accessed.

if (!this->Impl->ShaderProgram->GetCompiled())
{
vtkErrorMacro("Shader failed to compile");
}

I think the access of the pointer is a bug.  However, could anything on my side result in the failure of the shader to compile?

Thanks

Rick

Thanks

Rick

On Feb 27, 2016, at 12:08 PM, Ken Martin <ken.martin at kitware.com> wrote:

Awesome! I'll try to think about adding some sort of check for that condition. I can see it biting a number of folks.

Thanks
Ken

On Sat, Feb 27, 2016 at 9:48 AM, Richard Frank <rickfrank at me.com> wrote:
Hi,

We found the shared mapper, which was being copied during an object assignment operator. Problem solved. Thanks for the pointers! ( no pun, well maybe a small pun, intended)

Rick



Sent from my iPad

On Feb 24, 2016, at 12:16 PM, Ken Martin <ken.martin at kitware.com> wrote:

Thanks that helps. I am starting to wonder if the issue is related to multiple render windows. With multiple windows it is important to not share actors or mappers in the new OpenGL backend. Each window needs its own mappers and actors. They can share the same data source/readers but not the opengl pieces like actors/mappers. Does the problem still exist if you only have one renderWindow?

Thanks
Ken

On Wed, Feb 24, 2016 at 12:04 PM, Richard Frank <rickfrank at me.com> wrote:
I traced through the VTK code and then added a vtkOpenGLCheckErrorMacro :


vtkOpenGLPolyDataMapper::UpdateShaders(
vtkOpenGLHelper &cellBO, vtkRenderer* ren, vtkActor *actor)
{
vtkOpenGLRenderWindow *renWin = vtkOpenGLRenderWindow::SafeDownCast(ren->GetRenderWindow());

cellBO.VAO->Bind();
vtkOpenGLCheckErrorMacro("failed after cellBO.VAO->Bind()");



ERROR: In vtk770\Rendering\OpenGL2\vtkOpenGLPolyDataMapper.cxx, line 1390
vtkOpenGLPolyDataMapper (0000025BBD546CB0): failed after cellBO.VAO->Bind() 1 OpenGL errors detected
0 : (1282) Invalid operation

and the gl log has

GL ERROR - Function glBindVertexArray generated error GL_INVALID_OPERATION
GL ERROR - Function glDrawRangeElements generated error GL_OUT_OF_MEMORY

I'm guessing the glBindVertexArray is generating the error? Any ideas what might cause that?

The 6.3.0 code seemed to not use any shaders when rendering my model - when I launched the Shader Editor using 6.3.0 it was blank. When I launched the 7.0.0 code there were  a bunch of shaders being used.....


Thanks

Rick


On Feb 23, 2016, at 11:58 AM, Ken Martin <ken.martin at kitware.com> wrote:

Hmm something is really odd there.  16600 points/normals is trivially small. Even if you had 100 actors each with 16600 points that would be small. There are a couple ways to debug something like this. One is to go old school and sprinkle

  vtkOpenGLCheckErrorMacro("failed after something");

throughout the code to see where the issue is. Another option on windows is to use 

https://github.com/dtrebilco/glintercept

which produces a log showing the specific call that caused the problem and when run in the debugger it will break on opengl errors. There are other tools with similar capabilities available as well. 

If you can boil it down to something smaller I could try it out, my dev systems are all Qt4 though...

Ken






On Tue, Feb 23, 2016 at 11:37 AM, Richard Frank <rickfrank at me.com> wrote:
There are 16600 points and 16600 normals in each model, I'm using Qt 5.5 and there are four of these models - 1 in each renderview -  (Sagital, Axial, Coronal, etc). Each model is composed of surfaces created with triangle strips.

Each model contains a number of actors for each surface, (variable, depends on anatomy) put together into an assembly.

It's a medical application. Works fine in VTK 6.3.0 

NVidia quadro K5200
Graphics Card should be beefy enough.

Rick


On Feb 22, 2016, at 09:44 PM, Ken Martin <ken.martin at kitware.com> wrote:

Out of memory is an unusual one. Maybe the mesh is too big to load all at once in the new backend. How big is the mesh you are trying to render (number of points, number of triangles) and does it use cell colors or cell normals?  That would help me get a feel if it is really just exceeding what the card can handle.

Thanks
Ken


On Mon, Feb 22, 2016 at 6:50 PM, Richard Frank <rickfrank at me.com> wrote:
Hi,

I get the following errors ( and my fairly complex polygon mesh fails to render ) when using VTK 7.0.
ERROR: In

\vtk770\Rendering\OpenGL2\vtkOpenGLPolyDataMapper.cxx, line 1440
vtkOpenGLPolyDataMapper (0000016618EFD490): failed after UpdateShader 1 OpenGL errors detected
0 : (1282) Invalid operation



ERROR: In \vtk770\Rendering\OpenGL2\vtkOpenGLActor.cxx, line 91
vtkOpenGLActor (0000016619E228B0): failed after Render 1 OpenGL errors detected
0 : (1285) Out of memory


This is code is " works " fine in 6.3.0.

I'm using an NVidia quadro K5200 with 8G.

Any tips on how to debug this?
Thanks

Rick


Sent from my iPad
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers



-- 
Ken Martin PhD
Chairman & CFO
Kitware Inc.
28 Corporate Drive
Clifton Park NY 12065
518 371 3971

This communication, including all attachments, contains confidential and legally privileged information, and it is intended only for the use of the addressee.  Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken in reliance on it is prohibited and may be unlawful. If you received this communication in error please notify us immediately and destroy the original message.  Thank you.



-- 
Ken Martin PhD
Chairman & CFO
Kitware Inc.
28 Corporate Drive
Clifton Park NY 12065
518 371 3971

This communication, including all attachments, contains confidential and legally privileged information, and it is intended only for the use of the addressee.  Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken in reliance on it is prohibited and may be unlawful. If you received this communication in error please notify us immediately and destroy the original message.  Thank you.



-- 
Ken Martin PhD
Chairman & CFO
Kitware Inc.
28 Corporate Drive
Clifton Park NY 12065
518 371 3971

This communication, including all attachments, contains confidential and legally privileged information, and it is intended only for the use of the addressee.  Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken in reliance on it is prohibited and may be unlawful. If you received this communication in error please notify us immediately and destroy the original message.  Thank you.



-- 
Ken Martin PhD
Chairman & CFO
Kitware Inc.
28 Corporate Drive
Clifton Park NY 12065
518 371 3971

This communication, including all attachments, contains confidential and legally privileged information, and it is intended only for the use of the addressee.  Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken in reliance on it is prohibited and may be unlawful. If you received this communication in error please notify us immediately and destroy the original message.  Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160227/fa304cd0/attachment.html>


More information about the vtkusers mailing list