-
Notifications
You must be signed in to change notification settings - Fork 117
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
What extensions need to be reported through CL_PLATFORM_EXTENSIONS
#1287
Comments
I remember being confused about this also. I read "Each extension that is supported by all devices associated with this platform must be reported here" to mean:
There's a CTS that kind of checks for this. It's a little weird though, in that it only tracks a specific set of extensions. IMHO this test should be expanded so it checks for all of the extensions reported in https://github.com/KhronosGroup/OpenCL-CTS/blob/main/test_conformance/api/test_platform.cpp#L24 |
I think this test looks entirely broken, especially as But yeah, I think it makes sense to clean this up and to clarify what we want to test here. I can certainly change the behavior in rusticl to check all devices and report all common extensions, if that's what's expected here anyway. |
I think my point here is, that we don't know how all the other implementations are behaving and if they'd even pass once that test gets fixed. Should probably bring it up on the next WG meeting and see what others say. |
KhronosGroup/OpenCL-CTS#2172 updates the test so it works the way I expect it should work. It's passing on most of the implementations I've tested, though not all: one implementation is returning |
Discussed in the December 10th teleconference. Our current thinking is:
Next steps are:
|
I think there are certainly a list of extensions one could consider "platform extension" as they don't rely on any hardware capabilities:
I think the more interesting aspect here is consistency. What if an implementation also reports "purely platform extensions" as device ones? What if applications start to rely on it as they were developed against such implementation? Should we just state that every platform extension should also be reported as a device one so we enforce consistency across implementations? Or do we want to enforce that "purely platform extensions" won't be reported as device extensions at all? Or should we not care about inconsistency here? |
Hmm, the more I think about this, the more I think the notion of a "platform extension" is unnecessary. Even if it's a little silly, we should just include the "platform extensions" in the device query also (as suggested above), and then we can say that an extension will be included in the query for If we don't do this, we're going to need to define exactly what it means to be a "platform extension", and I think we're going to find that challenging and subjective. |
One sentence in the spec which I'm not entirely sure how to parse is "Each extension that is supported by all devices associated with this platform must be reported here.".
As of now in rusticl/mesa we only report extensions which don't rely on any hardware support and only those we promise to support on every possibly supported device.
However one could also read this as "extensions supported by all devices by this platform need to be listed there". "all devices" as in all the currently available and listed ones.
We are probably one of the few OpenCL implementations where distinguishing between those two interpretations might even matter and I was wondering if it makes sense to clarify this or what the actual intention here was.
The text was updated successfully, but these errors were encountered: