SystemInfo.IsFormatSupported says I can't read pixels from the integer format textures, but in the raw OpenGLES outside Unity I can

I use Unity for target platform Android + OpenGLES. Before I used Unity, I used raw OpenGLES and I know I can use glReadPixels on a render texture with integer format, e.g. GL_RGBA32UI.

However, in Unity with Universal Rendering Pipeline probing the corresponding GraphicsFormat fails, e.g.

// true
SystemInfo.IsFormatSupported(GraphicsFormat.R32G32B32A32_UInt, FormatUsage.Render);

// false
SystemInfo.IsFormatSupported(GraphicsFormat.R32G32B32A32_UInt, FormatUsage.ReadPixels);

The behavior is the same for other _UInt, _SInt texture formats. Only some variants of _SRGB/_UNorm/_SNorm/_SFloat can be both rendered to and read to CPU.

I wonder if it’s possible to change this behavior with some URP settings that I don’t know, or maybe using older rendering approaches before URP?

I tried enabling/disabling High Dynamic Range, it’s all the same

I’m thinking the problem is unrelated to the target device and OpenGLES, as when launching in editor on Windows (presumably OpenGL), the behavior is the same