Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
20602 Discussions

Possible bug(s) in GPU Driver ?

afilb
Beginner
2,987 Views

Hello,

With a Haswell i7-4770R, Windows 8.1 64 up to date, GPU Intel drivers 15.36.21.64.4222 (and also 15.36.19.64.4170),

OpenGL 3.3 with

static const int context_attribs[] = {

WGL_CONTEXT_MAJOR_VERSION_ARB, 3, WGL_CONTEXT_MINOR_VERSION_ARB, 3,

/* WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,

WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, */

0 } ;

GLWin.hRC = wglCreateContextAttribsARB (GLWin.hDC, 0, context_attribs);

this code does an endless loop without any OpenGL error :

GLsync g = 0;

GLint result = GL_SIGNALED;

glFinish (); // To be sure the OpenGL server is clear and waiting

g = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);

glGetSynciv (g, GL_SYNC_STATUS, sizeof(GLint), NULL, &result);

// glFlush (); /* Need to avoid the endless loop ??? */

while (result == GL_UNSIGNALED) {

printf ("I'm always in the loop\n");

glGetSynciv (g, GL_SYNC_STATUS, sizeof(GLint), NULL, &result);

}

glDeleteSync (g);

To avoid the endless loop, glFlush must be set after the first glGetSynciv. But it's not need in

OpenGL API.

Without the glFlush, the same code in Linux (Fedora 21 64 up to date).

I have tested a Nvidia card in Linux & Windows: OK without glFlush.

***************************************************************************************************************

The only solution I found to avoid glGetSynciv is to remplace it by glClientWaitSync, but I

have a performance problem.

GLsync g = 0;

GLenum result;

g = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);

result = glClientWaitSync (g, GL_SYNC_FLUSH_COMMANDS_BIT, 0);

while (result == GL_TIMEOUT_EXPIRED) {

result = glClientWaitSync (g, 0, 0);

}

The result is correct, but the performance between Linux & Windows is really odd. When I

remove this synchronisation, my off screen rendering has a FPS = 3200 -/+ 100

in Linux and Windows. With this synchronisation on, in Linux, no difference; in Windows, the

FPS is slowed to ~1550.

The only reason I see for this difference of performance is the possibility, even with timeout=0

everywhere, than the code of Windows driver for glClientWaitSync does an equivalent of a Sleep (0) ?

To confirm my hypothesis, I have tried

result = glClientWaitSync (g, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000);

without any loop. Windows is not a real time system; a real sleep with timeout must be really

expensive in terms of performance. But my FPS is ~1500 too, same performance than previous test.

Of course, in Linux, the FPS is always 3200.

Thanks for reading and for any help!

0 Kudos
1 Solution
Bryce__Intel
Employee
1,173 Views

Issue being closed out as 'Not technically feasible'.

View solution in original post

0 Kudos
5 Replies
Allan_J_Intel1
Employee
1,173 Views

Thanks for reporting this problem, I would need additional information about your system configuration.

Please provide the graphics report generated within Graphics Control Panel and also the DXdiag report

http://www.intel.com/support/graphics/sb/cs-009476.htm Graphics Drivers — Intel® Graphics Driver Report

Click Start, click Run, type dxdiag in the Open box, and then click OK.

Allan.

0 Kudos
afilb
Beginner
1,173 Views

Hi Allan,

GCP & DXdiag, as requested.

Alain.

0 Kudos
Tomasz_P_Intel
Employee
1,173 Views

Hi,

I'm OGL driver developer trying to fix issue(s) you've noticed. Could you please do one more experiment? Could you set timeout in ClientWaitSync to 1 please? Does it help with performance issue?

0 Kudos
Marvin_L_Intel
Employee
1,173 Views

Hello HelloGuys,

We would like to know if you were able to do the suggestion given by tomasz_OGL or if you still have problems so we can escalate the situation to our engineering team in charge of the product?

Thank you in advance for your help on this.

Warm regards,

marving_intel

0 Kudos
Bryce__Intel
Employee
1,174 Views

Issue being closed out as 'Not technically feasible'.

0 Kudos
Reply