| Rules for Claiming a Conformant WebGL Implementation |
| ==================================================== |
| |
| The WebGL API is a web standard, and many web browser implementers |
| deliver their browser on multiple operating systems (OSs). WebGL |
| implementations also typically rely on the presence of an OpenGL or |
| OpenGL ES implementation on the OS. It can be appreciated that a WebGL |
| implementation therefore has many dependencies. This document attempts |
| to clarify to potential implementers the rules the Khronos Group uses |
| to judge whether a particular WebGL implementation is conformant. |
| |
| There are two primary reasons to submit conformance results: |
| |
| A) A web browser implementer desires to certify their WebGL |
| implementation as conformant. |
| |
| B) A GPU manufacturer delivering an embedded system including web |
| browser with WebGL support desires to certify their WebGL |
| implementation as conformant. |
| |
| Each of these situations carries different constraints, so the |
| conformance rules are phrased differently for each. Typically, a web |
| browser implementer aims to certify that the WebGL "layer" is correct. |
| A GPU vendor typically aims to certify that a given device is |
| physically capable of passing the tests. |
| |
| A newly-developed WebGL implementation should not support the "webgl" |
| HTML Canvas context type by default in a shipping version of the |
| product until reaching conformance. It is acceptable to give end users |
| an option to turn on WebGL support in a non-conformant implementation |
| as long as the documentation for that option clearly indicates that |
| the implementation is not yet conformant and may have compatibility |
| issues. It is suggested that the Canvas context type |
| "experimental-webgl" may be supported by default in such |
| implementations. |
| |
| A WebGL implementation might reach conformance, but a subsequent |
| graphics driver release on a particular OS might introduce a |
| regression causing failures of one or more of the WebGL conformance |
| tests. In this situation it is not required to revoke support for the |
| "webgl" HTML Canvas context type. The WebGL implementer should work |
| with the GPU vendor to ensure the driver regression is fixed. A |
| situation like this would, however, prevent the WebGL implementer from |
| conforming to a subsequent version of the test suite. |
| |
| (A) Conformance Rules for a Web Browser Implementer |
| =================================================== |
| |
| 1. Conformance on a particular operating system |
| |
| On a given OS, a WebGL implementation will be considered to conform to |
| a particular version of the conformance suite if the suite passes with |
| no test failures on at least two GPUs, each from a different |
| vendor. If the OS only supports a GPU from one vendor, the two-GPU |
| requirement is dropped. |
| |
| 2. Conformance across multiple operating systems |
| |
| A WebGL implementation will be considered to conform to a particular |
| version of the conformance suite if it passes rule (1) on all of the |
| OSs on which the WebGL implementation is intended to be supported. |
| |
| 3. Conformance as the web browser is upgraded |
| |
| WebGL conformance results submitted for an earlier version of the |
| browser carry forward to later versions of the browser that do not |
| cause any previously passing test to fail. |
| |
| 4. Conformance as the operating system is upgraded |
| |
| If a new version is released of one of the OSs on which a WebGL |
| implementation is intended to run, then WebGL conformance results |
| submitted for earlier versions of that OS carry forward. Future |
| conformance results must be submitted against the new version of the |
| OS. If it is anticipated that the older OS version will be supported |
| for some time, then future conformance results must be submitted |
| separately for both the old and new versions of the OS. |
| |
| (B) Conformance Rules for a GPU Vendor |
| ====================================== |
| |
| A GPU vendor submitting conformance results for a WebGL implementation |
| typically does so because the device containing the GPU includes a |
| built-in web browser. In this case the following rules apply: |
| |
| 1. Conformance results must be submitted for each GPU and operating |
| system combination to be certified. It is not required to submit |
| results for different devices containing the same GPU and running the |
| same operating system that do not cause any previously passing test to |
| fail. |
| |
| 2. Conformance results carry forward for a given GPU as the operating |
| system and graphics driver are upgraded but do not cause any previously |
| passing test to fail. |
| |
| Discussion |
| ========== |
| |
| A WebGL implementation intended to ship on three OSs may reach |
| conformance on two of them, but due to graphics driver bugs, may be |
| unable to reach conformance on the third. In this situation the |
| implementation is not yet considered to be conformant. |
| |
| An existing WebGL implementation which conformed to an earlier version |
| of the test suite is not required to remove support for the "webgl" |
| HTML Canvas context type while in the process of conforming to a later |
| version of the test suite. However, the implementer must not advertise |
| conformance to the later version until it has been reached. It is |
| acceptable for the implementer to advertise details of their |
| conformance, for example number or percentage of passing or failing |
| tests, or names of passing or failing tests. |
| |
| A GPU vendor might submit conformance results in order to use the |
| WebGL logo in a marketing campaign. In this situation, results may be |
| submitted in advance of the product becoming available through sales |
| channels, per the rules above. |
| |
| The WebGL API has strict security requirements. Even one failing test |
| may indicate a serious security issue in the WebGL implementation. For |
| this reason, no exceptions for failing conformance tests will be |
| granted. |
| |
| The Khronos Group determines whether a particular WebGL implementation |
| is conformant based on the implementer's conformance suite |
| submissions, on multiple OSs and on multiple GPUs as necessary, using |
| the rules above. An implementer shall not judge their own |
| implementation conformant simply by applying the above rules. |