Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
23726 Diskussionen

Possible bug(s) in GPU Driver ?

afilb
Einsteiger
5.685Aufrufe

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 Lösung
Bryce__Intel
Mitarbeiter
3.871Aufrufe

Issue being closed out as 'Not technically feasible'.

Lösung in ursprünglichem Beitrag anzeigen

5 Antworten
Allan_J_Intel1
Mitarbeiter
3.871Aufrufe

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.

afilb
Einsteiger
3.871Aufrufe

Hi Allan,

GCP & DXdiag, as requested.

Alain.

Tomasz_P_Intel
Mitarbeiter
3.871Aufrufe

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?

Marvin_L_Intel
Mitarbeiter
3.871Aufrufe

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

Bryce__Intel
Mitarbeiter
3.872Aufrufe

Issue being closed out as 'Not technically feasible'.

Antworten