Jump to content
The Dark Mod Forums

Lastest AMD Catalyst and TDM: yellow tint and normals gone fubar?


Recommended Posts

Don't think it's an HW fault, other (OpenGL) games run fine!

Radeon RX 570 + Catalyst 21.3.1

https://postimg.cc/yWjD5M1Z
https://postimg.cc/DSJmSmqr
 

Normal Maps compression already DISABLED.

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Posted (edited)

They (AMD) changed something in OpenGL compatibility profiles for sure 'cause now:

1) Quake 2 XP (2020 / lastest patched version) works (!)

2) ioRTCW with the new renderer runs @3x the old framerate (!)

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Posted (edited)

Addendum: if image_usePrecompressedTextures "0" -> BLACK SCREEN (game is working)

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Posted (edited)
13 minutes ago, cabalistic said:

Disable r_useBindlessTextures. I'm afraid this is probably some sort of AMD driver bug.

It's working, thanks!

Addendum: i've gained 4 FPS too! :D

 

Maybe it's not a severe bug but some issues with the selected (by the driver) compatibility profile for the application (TDM).

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
17 hours ago, lowenz said:

Maybe it's not a severe bug but some issues with the selected (by the driver) compatibility profile for the application (TDM).

Could you be more precise with this "compatibility profile" term?

From OpenGL standpoint, TDM runs under "core profile" now, unless you changed it manually via cvar.

Link to post
Share on other sites
Posted (edited)

AMD uses its own "compatibility profiling" (for the driver) to avoid/solve problems with OpenGL extensions.

It's why you can run '90s OpenGL games (example: SiN) with no tweaking needed.

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
2 minutes ago, lowenz said:

Example in ioQuake3

Classic Renderer (Opengl 1.x?)

https://i.postimg.cc/jq62xw0d/0.jpg
 

New Renderer

https://i.postimg.cc/xCDjYY6z/1.jpg

Well, in TDM you will see 3.3 Core Profile, like in ioQuake3's "New Renderer".
Regardless of which vendor, GPU, and driver you have.

UPDATE: And the profile reported by ioQuake in these screenshots is OpenGL profile, I'm pretty sure.

Link to post
Share on other sites
Posted (edited)

So maybe TDM is running in 3.3 mode but 3.3 mode is NOT compatible with BindlessTextures (only 4.x?)

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Posted (edited)
8 minutes ago, stgatilov said:

UPDATE: And the profile reported by ioQuake in these screenshots is OpenGL profile, I'm pretty sure.

OK, but the problem now is if "Bindless Textures" are 3.3 compliant in AMD implementation.

There's a RED cross in the console extensions list when you start TDM, about "GL_ARB_COMPATIBILITY", just right after "Bindless Texture" (GREEN CHECK!)

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Just now, lowenz said:

So maybe TDM is running in 3.3 mode but 3.3 mode is NOT compatible with BindlessTextures (only 4.x?)

Bindless textures are used as extension, which does not require GL version to go up --- it can stay at 3.3 (even at 1.1 probably😲)
In fact, bindless textures are not in core OpenGL yet: there is no GL version that provides them, extension is the only way.

By the way, you can try to enable compatibility profile: cvar "r_glCoreProfile 0" + fresh restart.
I'm pretty sure it will print "GL 4.6 compatibility profile" then.
But better return cvar back after you try.

Link to post
Share on other sites

If it were not compatible, you should be getting a black screen because nothing could be rendered without textures. But in practice, it does render, just with confused texture associations. It looks and feels very much like a bug, but unfortunately I don't (yet) have access to an AMD device myself, so it' very hard to debug...

Link to post
Share on other sites
2 minutes ago, stgatilov said:

Bindless textures are used as extension, which does not require GL version to go up --- it can stay at 3.3 (even at 1.1 probably😲)
In fact, bindless textures are not in core OpenGL yet: there is no GL version that provides them, extension is the only way.

By the way, you can try to enable compatibility profile: cvar "r_glCoreProfile 0" + fresh restart.
I'm pretty sure it will print "GL 4.6 compatibility profile" then.
But better return cvar back after you try.

It gives me "3.3" and with GL_ARB_COMPATIBILITY Green! No more red!

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
Posted (edited)

r_glCoreProfile "0"

Here's the screenshot (with r_glCoreProfile "2" - 3.3 core profile - I *CAN'T* take a screenshot, the screenshot is all black! :D )

https://postimg.cc/fJ767nhV

 

Performance is pretty the same, still BindlessTextures NOT working right (if set to 1).

No need to vid_restart, just setting it to 0 solves the issue directly in game.

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites

To wrap up the behaviour:

r_glCoreProfile "0" -> 3.3 compatibility profile context

r_glCoreProfile "2" -> 3.3 core profile forward-compatible context

Either way r_useBindlessTextures is not working (so maybe it's a bug and not a compatibility issue)

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites

Compatibility profiles are an aspect of standard OpenGL initialisation. They are not related specifically to AMD or enabling support for particular games.

In a Core profile, certain deprecated features (like immediate mode, glBegin/glEnd etc) are removed, whereas in Compatibility profiles they remain available to support legacy applications.

The driver is allowed to offer different GL versions for each profile, for example on macOS if you request a Compatibility profile you will never get anything more recent than 2.1. Neither the Core not the Compatibility profile should vary its behaviour based on the game, although it wouldn't surprise me if nasty things like Catalyst AI (if it still exists) interfere with this.

Link to post
Share on other sites
Posted (edited)

I know but the implementation of AMD enable some kinds of automatic extension compatibility, 'cause ID2 Tech based games need manual extension override control on Nvidia GPU systems.

MESA  too needs to set it manually (via environment variables)

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
18 hours ago, lowenz said:

I know but the implementation of AMD enable some kinds of automatic extension compatibility, 'cause ID2 Tech based games need manual extension override control on Nvidia GPU systems.

It is pretty hard to believe it.

Link to post
Share on other sites
9 hours ago, lowenz said:

Don't see anything there.

  • ref_gl.dll is Quake renderer, it prints version 0.01, which has no relation to OpenGL.
  • OpenGL has version 4.6 Compatibility profile --- that's what any OpenGL application will get unless it specifically asks for Core profile.
  • Version 3.20 is one of the latest versions of quake, and I find it plausible that it was released in 1998.

Where is "special compatibility mode", where is "extensions override" ?

Link to post
Share on other sites

I guess the screenshot proves that the legacy Quake binary can work with a modern OpenGL 4.6 driver, but this in itself does not prove that the driver is doing something special to make Quake work. The whole idea of OpenGL is that it is backwards compatible (except in Core profiles which you don't get by default), which means that a 1998 game designed against OpenGL 1.2 or whatever should continue to work perfectly fine on an OpenGL 4.6 Compatibility profile.

All we can see in that screenshot is that OpenGL's generic backwards compatibility is working exactly as it should.

Link to post
Share on other sites
Posted (edited)

It shows that the AMD driver is compliant when the Nvidia one (or MESA) needs extensions override mechanism to run IDTech 2 based engines.

Edited by lowenz

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.

Link to post
Share on other sites
16 hours ago, lowenz said:

It shows that the AMD driver is compliant when the Nvidia one (or MESA) needs extensions override mechanism to run IDTech 2 based engines.

Ok, you are probably right here.

Although I downloaded the same Q2 version and it works fine with OpenGL renderer without any additional actions, it might be some tweak on driver side. On the other hand, I think your extension string is reduced too: do you see ARB_bindless_texture in the list? I don't see it in my list on NVIDIA either.

One possible explanation about it is that old games were written in C, and they often copied OpenGL extension string into a fixed-size C string. At that time number of extensions was very low, so the programmers didn't think about how long it will grow in 20+ years. I guess NVIDIA supports more extensions in raw number, meaning that they faced this problem earlier than AMD.

Curiously, GL3 introduced a different mechanism for querying extensions in order to force programmers not doing this mistake. The new mechanism is somewhat less comfortable...

Link to post
Share on other sites
On 3/22/2021 at 8:10 PM, cabalistic said:

Disable r_useBindlessTextures. I'm afraid this is probably some sort of AMD driver bug.

Was reading about bindless textures to know what they are and saw this:

Quote

Bindless textures are not safe. The API is given fewer opportunities to ensure sane behavior; it is up to the programmer to maintain integrity. Furthermore, the consequences for mistakes are much more severe. Usually with OpenGL, if you do something wrong, you get either an OpenGL Error or undefined behavior. With bindless textures, if you do something wrong, the GPU can crash or your program can terminate. It might even bring down the whole OS.

Is that really that unsafe? 

Edited by HMart
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...