KhronosGroup / EGL-Registry

EGL API and Extension Registry
115 stars 105 forks source link

EGL_CHROMIUM_sync_control extension missing from EGL-Registry #115

Closed pasikarkkainen closed 2 years ago

pasikarkkainen commented 3 years ago

It seems for some reason "EGL_CHROMIUM_sync_control" extension is missing from the registry. Specification is available at https://chromium.googlesource.com/chromium/src/gpu/+/master/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt

At least Mesa implements EGL_CHROMIUM_sync_control extension since 2014, and for example Firefox is planning to start using it with the (recently introduced) EGL/X11 backend (https://bugzilla.mozilla.org/show_bug.cgi?id=1640779). Chromium afaik already uses it. There are probably other users aswell.

rmader commented 3 years ago

For the record: it may make sense to rename it to EGL_ANGLE_sync_control to match EGL_ANGLE_sync_control_rate (https://github.com/KhronosGroup/EGL-Registry/issues/116)

oddhack commented 3 years ago

We don't include extensions in the registry unless the authors ask for them to be included. Given the age of the extension, it was probably done internally at that time and the author simply didn't realize, or forgot to submit it here, then moved on to other things. The only identified contact is Stéphane Marchesin and if you want to reach out to them, or to the Chromium project, and ask them to submit the extension here, that would be great.

stonesthrow commented 3 years ago

👍

pasikarkkainen commented 3 years ago

I managed to contact Stéphane Marchesin who is marked as the contact for EGL_CHROMIUM_sync_control extension in the spec. This is the response I got:

For Chrome OS (which is what I work on, and why this extension was made),
we have stopped using sync_control circa 2015, when Chrome OS moved all
the WSI stuff outside of the driver. Now we use external eglimages as our
render targets, and then take those buffers to DRM/KMS directly to display
them. In other words, we don't use eglSwapBuffers and friends, and as such
we don't have a need for this extension because we do our own frame
scheduling directly on the display driver.

EGL_CHROMIUM_sync_control extension is marked as "Related" in another recently merged EGL_ANGLE_sync_control_rate extension ( https://github.com/KhronosGroup/EGL-Registry/blob/master/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt ) so for completeness it would of course be good to have EGL_CHROMIUM_sync_control spec merged aswell, but it sounds like google does not have interest for the extension anymore..

oddhack commented 3 years ago

... so for completeness it would of course be good to have EGL_CHROMIUM_sync_control spec merged aswell, but it sounds like google does not have interest for the extension anymore..

Realistically all that can be done is to create a stub extension specification quoting what you've learned here, in case someone raises the question in the future, and likewise create a stub extension interface in egl.xml (or an actual extension if the API is known from their SDKs). If you want to make a PR along those lines I think it would be accepted - you would want to include a disclaimer in the "specification" saying that it is not an official Google submission, just a community attempt to document the old extension. We have a few GL extension specs like that already.

stonesthrow commented 2 years ago

Checking back, is this issue ready for closure? or do you have action?

pasikarkkainen commented 2 years ago

Well, as it seems the original authors are not interested in creating a PR for this, i guess I can copy the extension spec from https://chromium.googlesource.com/chromium/src/gpu/+/refs/heads/main/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt and create a PR here, with the notes @oddhack mentioned..

I won't have time for this right now, but hopefully I will have before not too long from now. Thanks for pinging @stonesthrow

stonesthrow commented 2 years ago

I'll leave open for you to follow up then.

stonesthrow commented 2 years ago

ANGLE has both extensions in angle/extensions. The EGL registry has EGL_ANGLE_sync_control_rate.txt So its up to Chromium if EGL_CHROMIUM_sync_control is added to the registry. If this is not important, then lets close this issue.

pasikarkkainen commented 2 years ago

It seems we don't have any EGL_CHROMIUM extensions in EGL-Registry so far.

Thus I'm not sure if I'm allowed to copy and add "EGL_CHROMIUM_sync_control" extension myself, as that would introduce the whole CHROMIUM directory.. what's the policy on that? Does the directory need to be added by someone from CHROMIUM ?

Would be good if someone from CHROMIUM did this, but I guess they haven't been interested in having their extensions in EGL-Registry ..

stonesthrow commented 2 years ago

It would be totally up to the Chromium team, whether they want to add/expose extensions to the registry or not. I can try and contact someone, but since they have not published any extensions, I would think that is their policy. Let me ask a few Googlers on the Chromium team and see if there is a policy. But neither I or you should because its a vendor purview.

stonesthrow commented 2 years ago

"The ANGLE policy is to skip upstreaming extensions unless we determine it's needed for other teams (outside Google generally)."

stonesthrow commented 2 years ago

Will not add extension to registry per Chromium policy.