LWJGL / lwjgl

[LEGACY] LWJGL 2.X - The Lightweight Java Game Library.
http://legacy.lwjgl.org/
546 stars 207 forks source link

Performance issues with integrated intel GPUs #127

Open jikuja opened 8 years ago

jikuja commented 8 years ago

Three newest generations of intel HD graphics GPU drivers seems to have bug which decreases performance. Current workarounds:

Summary of my my findings:

My personal notes: https://paste.ee/p/RNmFU includes links to logs, lists of driver/OS/java versions

Does anyone has access for hardware and good knowledge of opengl to write SSCCE?

Ping #119

Spasi commented 8 years ago

Like issue 119, this cannot be something that LWJGL is able to fix. Isn't there an issue open for this at bugs.mojang.com?

Anyway, it looks like some texture creation/generation is taking place between 6311 and 6322. It could be something simple like a data format that forces the Intel driver out of the fast path. Using GL_BGRA and GL_UNSIGNED_INT_8_8_8_8_REV for texture uploads is known to be much faster on Intel hardware. Could someone produce a trace of LWJGL methods called during the slow part?

grum commented 8 years ago

Using GL_BGRA and GL_UNSIGNED_INT_8_8_8_8_REV for texture uploads is known to be much faster on Intel hardware.

Is there a public list/repo/collection of these 'known' things that are 'faster'?

Spasi commented 8 years ago

Search for intel GL_UNSIGNED_INT_8_8_8_8_REV and you'll find several references.

I started using it in LWJGL-FX, where texture transfer performance is critical. It made a huge difference on Intel hardware and hadn't any negative impact on other code paths or GPUs.

It might be entirely irrelevant to the problem of course, I don't know what Minecraft's doing there.

grum commented 8 years ago

Yeah, nice that vendors actually document these things .

To my surprise I picked exactly that way to upload the data just because it 'felt the easiest' to from the ARGB BufferedImage provides to BGRA the gpu seems to accept.

@jikuja maybe some mod/plugin uses another way to upload and not the one the game provides?

jikuja commented 8 years ago

I fear I have nothing more to give for this discussion with my nonexistent opengl knowledge and with minor forge knowledge.

Should we ping forge devs?