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

OpenGL Core Profile issues on new Intel GPU's like Iris Xe on Windows

cadaver
Beginner
2,620 Views

 

Hi,

I'm programming a hobbyist 3D engine using OpenGL 3.3 and have come across some perplexing issues on newer Intel GPUs like Iris Xe and UHD620 on Windows when requesting an OpenGL core profile context. When I request a compatibility profile context instead, the issues don't exist.

The main issue is that using wglSwapIntervalEXT to toggle vsync only works for the first call, then further calls have no effect.

Furthermore on a compatibility profile I see much better performance for reading back results of occlusion queries, and when rendering with vsync on, I see a stall when presenting the backbuffer (as expected, similar to the behavior Nvidia & AMD GPU's) instead of the stall happening at some other point during rendering of the frame, or submitting the rendering commands just taking longer.

I'm using the SDL2 library for OpenGL and window initialization.

Just wanted to report the issue, for me personally it's good enough that I detect the "Intel" vendor and switch to compatibility profile. That way I lose RenderDoc profiling since it requires a core profile, but well, can't have everything. 🙂

In case of interest, the hobby engine in question is https://github.com/cadaver/turso3d and the commit 97acede684c92a3c2fdcab687ff0decd29497295 is where I inserted the vendor detection and use of compatibility profile. Earlier revisions will use just core profile everywhere and thus exhibit the issues.

0 Kudos
10 Replies
Jean_Intel
Employee
2,591 Views

Hello cadaver,

 

Thank you for posting on the Intel️® communities. We would be more than glad to help you with your issue.

 

To better assist you, please provide me with the following:

  • As per my understanding, this is a personal project. Is this correct?
  • Have you been able to test this using non-Intel Graphics? Do you experience similar behaviors?
  • Also, we would like to ask for more system information; please create a system report using the Intel®️ System Support Utility (Intel®️ SSU) 
    • Download the Intel SSU
    • Open the application and click "Scan" to see the system and device information. By default, Intel®️ SSU will take you to the "Summary View."
    • Click on the menu where it says: "Summary" to change it to "Detailed View."
    • To save your scan: click "Next"; then "Save."

 

Best regards,

Jean O. 

Intel Customer Support Technician


0 Kudos
cadaver
Beginner
2,571 Views

Hi, thanks for the response!


Yes, it's a personal project, but available for public access in the github link provided.

I have tested the project on several other GPUs including AMD and Nvidia and also an older Intel GPU (HD 4400), which don't exhibit these issues at all, or any noticeable difference in behavior or performance between compatibility and core profile at least on their current drivers. Though the compatibility profile is not always available, such as in the Linux open source Intel GPU driver for the HD 4400.

The issue about occlusion query readback performance is a bit subjective, but a typical "good" performance on the compatibility profile I've seen would be to read 200 queries in about 0.5 milliseconds, and the "bad" performance on the core profile would be 200 queries in 4 milliseconds, so a 8x slowdown. This is on the Iris Xe. I realize that this might not be about occlusion query performance specifically but just a higher overhead per OpenGL API call in the core profile?

I'm attaching the SSU reports for the machines I found the core profile issues on. Both are ASUS Zenbooks running Windows 11.

0 Kudos
Jean_Intel
Employee
2,540 Views

Hello cadaver,

 

Thank you for the information provided.

 

Based on the reports, we noticed that the systems are not up to date. We recommend the following:

 

  • For the Zenbook 14 UX430:

We noticed that the Graphics driver version is 31.0.101.2115. The latest driver available in our download center is 31.0.101.2121. There are two different types of drivers, generics provided by Intel and Equipment Manufacturer drivers, that are customized to work with each specific system. Intel’s generic graphics drivers are intended for testing.

 

Also, your BIOS version (203) is an old version. On the Asus website, the latest version is the 313 You should update your BIOS.

 

  • For the Zenbook UX3402ZA:

The BIOS version is not the latest version available. You have installed version 305 and the latest BIOS is 313.

 

In case you have questions about the installation process for the BIOS update, you should contact ASUS support to gather instructions on how to update it. It is always important to keep your system up to date.

 

Best regards,

Jean O.

Intel Customer Support Technician


0 Kudos
Jean_Intel
Employee
2,497 Views

Hello cadaver,


We hope you are doing fine.


Were you able to check the previous post?

Let us know if you still need assistance.


Best regards, 

Jean O.  

Intel Customer Support Technician


0 Kudos
cadaver
Beginner
2,488 Views

Hi, yes I checked your suggestions, but I haven't yet had time to update the machines. Thank you!

0 Kudos
Jean_Intel
Employee
2,483 Views

Hello cadaver,

 

Thanks for the information provided.

 

We understand that you need more time to be able to test the recommendations we shared. We will keep this thread open for a few days so you can test the suggestions. Once you try them, share with us the outcome. Also, don't hesitate and let us know if you face any inconvenience.

 

Best regards,

Jean O. 

Intel Customer Support Technician


0 Kudos
cadaver
Beginner
2,458 Views

Hi, I was able to update the bios on the newer Zenbook (UX3402ZA) and re-test the OpenGL core vs compatibility profile behavior. It is unchanged. I'm also trying to see if I can find some game using OpenGL in Windows to see if it will behave the same.

0 Kudos
Jean_Intel
Employee
2,406 Views

Hello cadaver,

 

Thank you for the information provided.

 

We will proceed to check the issue internally and post back soon with more details.

 

Best regards,

Jean O.

Intel Customer Support Technician


0 Kudos
cadaver
Beginner
2,403 Views

Thank you!

I didn't find a suitable game so far (as many are using a legacy OpenGL initialization, or the compatibility profile) but it shouldn't matter what program is doing the rendering, just that the OpenGL context is initialized in manner like

int contextAttrs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
0
};

contextHandle = wglCreateContextAttribsARB(dcHandle, 0, contextAttrs);

and then, while running some rendering workload every frame, also attempt to toggle vsync back and forth with wglSwapIntervalEXT().

0 Kudos
Jean_Intel
Employee
2,387 Views

Hello cadaver,

 

We appreciate your patience.


To effectively address your concern, we suggest creating an account on our Intel® Developer Zone website to submit your inquiry. The document you mentioned is from this platform, and by doing so, you'll receive additional troubleshooting assistance and gain access to help documentation.

 

Intel®️ Developer Zone - Contact Page: https://software.intel.com/en-us/support

 

Since our last recommendation is to contact the Intel®️ Developer Zone, we will close this thread now. If you need additional information, please submit a new question since this thread will no longer be monitored.  

 

Best regards,

Jean O. 

Intel Customer Support Technician


0 Kudos
Reply