Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

EGL back end: Support for additional named framebuffer functions #136

Open
dcommander opened this issue Sep 8, 2020 · 1 comment
Open

Comments

@dcommander
Copy link
Member

dcommander commented Sep 8, 2020

Since the EGL back end uses FBOs to emulate Pbuffers, the "default framebuffer" (0) is really a named FBO. Thus, the EGL back end should interpose all named framebuffer functions that allow the default framebuffer (0) to be specified as an argument:

Function OpenGL version or extension Comments
glBlitNamedFramebuffer() 4.5
glCheckNamedFramebufferStatus() 4.5
glCheckNamedFramebufferStatusEXT() GL_EXT_direct_state_access
glClearNamedFramebufferiv() 4.5
glClearNamedFramebufferuiv() 4.5
glClearNamedFramebufferfv() 4.5
glClearNamedFramebufferfi() 4.5
glGetFramebufferParameterivEXT() GL_EXT_direct_state_access
glGetNamedFramebufferAttachmentParameteriv() 4.5
glGetNamedFramebufferAttachmentParameterivEXT() GL_EXT_direct_state_access
glInvalidateNamedFramebufferData() 4.5
glInvalidateNamedFramebufferSubData() 4.5
glIsFramebuffer() 3.0 Non-issue if the calling application only passes FBO names returned from glGenFramebuffers() to this function, but it would be an issue if the calling application does something stupid like iterating through all possible FBO names.
glIsFramebufferEXT() GL_EXT_framebuffer_object Ditto
@dcommander dcommander changed the title EGL back end: Support for named framebuffer functions EGL back end: Support for additional named framebuffer functions Sep 11, 2020
@dcommander
Copy link
Member Author

Notes about piglit coverage:

  • piglit either does not cover the functions mentioned above or never uses them with the default framebuffer.
  • The piglit object-namespace-pollution test is an example of an application that iterates through all possible FBO names. That test only works with the EGL back end because VGL doesn't interpose glIsFramebuffer*(). If VGL did interpose those functions, then piglit would assume that the FBO names corresponding to the default framebuffer were available, and it would stomp on them. :( That suggests that interposing those functions isn't the right thing to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant