Skip to content
New issue

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

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

Already on GitHub? # to your account

Clarification wanted: glGenerateMipmap format support #614

Open
kusma opened this issue May 27, 2024 · 3 comments
Open

Clarification wanted: glGenerateMipmap format support #614

kusma opened this issue May 27, 2024 · 3 comments

Comments

@kusma
Copy link
Contributor

kusma commented May 27, 2024

The OpenGL ES 3.2 spec, section 8.14.4 ("Manual Mipmap Generation") defines some additional requirements for GenerateMipmap() that the corresponding part of the OpenGL 4.6 compatibility spec doesn't include:

An INVALID_OPERATION error is generated if target is TEXTURE_-
CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY, and the texture bound to target
is not cube complete or cube array complete, respectively.

There's no indication in section 8.14.4 that mipmap generation isn't supported for all formats (although with an undefined filtering function).

However, OpenGL 4.6 spec, section 22.3.1 also includes the MANUAL_GENERATE_MIPMAP query, that seems to allow implementations to report lacking support for some (if not all?) formats. However, the CTS does not check formats before testing if mipmapping works. The CTS also seems to assume that a box-filter, which isn't mandated by the spec (although it's recommended).

So, my questions are:

  1. Is GenerateMipmap() supposed to to work for all core OpenGL 4.6 internal formats?
  2. If "yes", when is the MANUAL_GENERATE_MIPMAP-query allowed to report NONE?
  3. If "no", when is the MANUAL_GENERATE_MIPMAP-query required to report something else than NONE?
  4. If "no", is it about time to add a list of required formats to the spec? Since the CTS currently assumes a set of supported formats, all conformant products should already support a specific set, no?
@zmike
Copy link
Contributor

zmike commented Jun 5, 2024

WG 2024-06-05: Need more time to investigate/discuss.

@janharaldfredriksen-arm
Copy link
Contributor

There's no indication in section 8.14.4 that mipmap generation isn't supported for all formats (although with an undefined filtering function).

There are some format constraints for ES given this:

An INVALID_OPERATION error is generated if the level_base array was not specified with an unsized internal format from table 8.3 or a sized internal format that is both color-renderable and texture-filterable according to table 8.10.

That doesn't answer any of the questions for GL 4.6, though. It looks like MANUAL_GENERATE_MIPMAP was added in GL_ARB_internalformat_query2, but I haven't been able to dig up the discussion that led to that (and the spec doesn't say very much about what it means).

@janharaldfredriksen-arm
Copy link
Contributor

For reference, I found some of the original discussion around the MANUAL_GENERATE_MIPMAP internal format query: https://www.khronos.org/members/#/bugzilla/show_bug.cgi?id=7719 (needs Khronos internal bugzilla access).

I haven't read it all, though this bit seems relevant (MIPMAPS was later renamed to MANUAL_GENERATE_MIPMAP):

  • MIPMAPS (do we have any texture formats that don't support mipmapping?)
    Maybe not texture formats alone, but when you factor in you have cases where mipmapping is not supported (i.e. rectangle and multisample textures).

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

No branches or pull requests

3 participants