Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenGL rendering unusable on Intel Iris Xe #8195

Open
emezeske opened this issue Oct 11, 2024 · 0 comments
Open

OpenGL rendering unusable on Intel Iris Xe #8195

emezeske opened this issue Oct 11, 2024 · 0 comments

Comments

@emezeske
Copy link
Contributor

⚠️ Issues not using this template will be systematically closed.

Describe the bug
Using the OpenGL renderer on my Intel Iris Xe chipset produces corrupt results, whereas the exact same binary looks correct in OpenGL on my NVIDIA 2080 Ti. Furthermore, the Vulkan backend produces correct result on both chips (Intel and NVIDIA).

The code isn't doing anything fancy. Basically I just followed the examples to build a very basic scene with a skybox/IBL and am rendering a .glb object.

To Reproduce
Steps to reproduce the behavior:

  1. Run Filament in opengl mode on an Intel Iris Xe chip.

I used Renderdoc to capture a frame on the NVIDIA chip and the Intel chip. Here are the captures, which I think will be helpful to understand what's up:

https://static.anukari.com/blog-media/anukari-opengl-capture-bad.rdc
https://static.anukari.com/blog-media/anukari-opengl-capture-good.rdc

Expected behavior
Scene should look correct without corruption.

Screenshots
This screenshot shows what the good output is on my NVIDIA chip, taken from Renderdoc:
Image

This screenshot shows what I get instead on the Intel chip.
Image

There are a couple of interesting things I noticed on the Intel chip:

  1. If you look really closely, you can see a light red sphere on the black output, in the lower left quadrant. To my eyes, this looks like the depth buffer! And from playing with it, the depth buffer output is scaled to the lower left quadrant of the window. So while the sphere should be in the center of the viewport, it is showing up in the center of the lower left quadrant.
  2. In the Color Pass in Renderdoc, note that the Intel chip has an extra call at the end to glDrawElementsInstance(3, 1). This is the skybox. On the NVIDIA chip it's drawn at the beginning only. On the Intel chip it's drawn at the beginning and end. It is the second call that corrupts the color pass output, for some reason.

Logs
Here are the logs on the machine where OpenGL rendering is corrupt:

FEngine (64 bits) created at 00000288C0ED0290 (threading is enabled)
FEngine resolved backend: OpenGL
[Intel], [Intel(R) Iris(R) Xe Graphics], [4.5.0 - Build 32.0.101.6079], [4.50 - Build 32.0.101.6079]
Feature level: 3
Active workarounds:
vao_doesnt_store_element_array_buffer_binding
allow_read_only_ancillary_feedback_loop
Backend feature level: 3
FEngine feature level: 1

Logs from the machine where OpenGL rendering works:

FEngine (64 bits) created at 000001EAAF4EE2E0 (threading is enabled)
FEngine resolved backend: OpenGL
[NVIDIA Corporation], [NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2], [4.5.0 NVIDIA 561.09], [4.50 NVIDIA]
Feature level: 3
Active workarounds: 
allow_read_only_ancillary_feedback_loop
Backend feature level: 3
FEngine feature level: 1

Desktop (please complete the following information):

  • OS: Windows 11
  • GPU: [Intel], [Intel(R) Iris(R) Xe Graphics], [4.5.0 - Build 32.0.101.6079], [4.50 - Build 32.0.101.6079]
  • Backend: OpenGL

Smartphone (please complete the following information):

  • N/A

Additional context
N/A

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant