一封有关Intel集显驱动问题的邮件

The old intel’s driver have many bugs and it really makes me depressed when I try to find it and avoid it. We already rewrote the shader programs, but after the modification, there are still several problems on my intel card(G41/openGL 2.1).

Now I need your help and any help is appreciated. Thank you first.

One problem is about the arrow. As the figure below shows, the X axis, DE’s arrowhead and the cube marker are missing.

 

 

 

 

 

 

 

 

 

 

 

 

Now ignore the other elements, only focus on the missing X axis. Why only one axis is missing but the other two are correct? The following is the procedure I debug this problem.

Firstly, I found the function named CdDispAxisUtil() which is used to draw the coordinate axis. On this intel card, VBO is off but shader is on.

 

It seems the process is just right. Then I thought of gDEBugger. I can use it to see the depth buffer and the back buffer is right or not.

So I start the exe file via gDEBugger and set a breakpoint at glEnd(). Every time after drawing one axis, we stop and check the buffers. As the figure below shows, the buffers are all right.

 

 

 

 

 

 

 

 

 

 

 

Now is the strange thing. We don’t set a breakpoint after drawing one axis. Just set one breakpoint at the end of draw process. Run to the breakpoint directly, we check the buffers and find the X axis is missing.

 

Why we have two different results?

I guess there must be some display data are not accepted by the rendering engine. So I try to add glFlush() function at the end of each axis draw process. Unexpectedly the result is all correct.

 

I’m sure this is a bug of intel’s driver, but I’m not sure about the real reason. It seems if we want to make our software compatible with this intel card, the extra operation must be added.

What do you think about this problem?

posted on 2013-05-03 14:07  wanzw  阅读(159)  评论(0)    收藏  举报

导航