Bug 9875

Summary: Pixel formats with >8 bits per channel not available via OpenGL although apparently supported by hardware
Product: Mesa Reporter: Phillip Jordan <phillip.m.jordan>
Component: Drivers/DRI/i915Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED MOVED QA Contact:
Severity: enhancement    
Priority: low CC: michael.fu
Version: 6.5   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Phillip Jordan 2007-02-04 08:59:29 UTC
This might be a long shot.

I'm working on an OpenGL app, and discovered that there don't appear to be any texture formats with more than 8 bits per pixel available on my 915GM chip, using the DRI i810 driver.

I queried this by calling
glTexImage2D() with a target of GL_PROXY_TEXTURE_2D and an internal format of, for example, GL_RGB10_A2, GL_LUMINANCE16_ALPHA16, etc. (I actually tried all possible values) and appropriate other parameters. I then queried the exact format used by the hardware using

glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r);

for red, green, blue, alpha, lum, intensity channels. None of these ever yielded anything with more than 8 bits for any given channel.


Of course, this is allowed and compliant behaviour for an OpenGL implementation; however, I cross-checked what the hardware supports under Windows in Direct3D using the "DX Caps Viewer" tool, and this lists a number of texture formats with higher precision, among these the RGB10_A2 format and some 2-component, 16-bits-per-channel formats. In fact, the hardware can even render-to-texture on RGB10_A2. Note that I'm talking about fixed-point formats. I'm aware that floating-point textures are not available on the hardware.

Interestingly, the Win32 OpenGL driver exposes the same texture formats (max 8 bits) as the X.org/DRI one; I'm not sure what this means or explains, it's just an interesting data point.

In any case, I was wondering whether there were any plans to expose the formats supported by the hardware, or how hard this would be to do. (or, for that matter, GL_EXT_framebuffer_object, but that's a separate matter...)

I might even be persuaded to volunteer for implementing this myself, although I've never worked on X.org or DRI, and my experience of directly programming graphics hardware is limited to video game consoles, so it would require a healthy dose of documentation and helpful pointers on where to start...

Thanks
Comment 1 Daniel Stone 2007-02-27 01:36:10 UTC
Sorry about the phenomenal bug spam, guys.  Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 2 Michael Fu 2008-02-18 23:08:06 UTC
I'll mark this as resolve later for future development reference.
Comment 3 Adam Jackson 2008-02-24 18:22:26 UTC
Mass reopen.  The "LATER" resolution is lame, I'm deleting it.  Consider LATER to have arrived.
Comment 4 Elizabeth 2017-10-26 22:28:29 UTC
Good afternoon everyone. This request is too old, reported with Mesa 6.5 and i810 DRI driver. This should be closed or updated with latest versions. Please update information or case will be closed soon. Thank you.
Comment 5 Chris Wilson 2017-10-26 22:36:49 UTC
But Mesa still doesn't support 10bpc FbConfigs; not even for i965. Though there are finally patches to do so, so maybe next year!
Comment 6 GitLab Migration User 2019-09-18 19:32:16 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/671.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.