You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wording change: Streamline context creation and validation algorithms
Bundle validation right into context creation, rather than making it
a separate step.
Note that with the removal of the "validate MLContext" algorithm, a
handful of the internal enum members are never referenced; they are
implicitly mapped to identical enums defined in Web IDL. This is
discussed in #497 which proposes de-duping the enums. In the mean
time, the definitions are marked with "ignore" to silence warnings
about unreferenced defnitions.
Fixes#498
Copy file name to clipboardExpand all lines: index.bs
+8-27
Original file line number
Diff line number
Diff line change
@@ -800,6 +800,7 @@ Its <a>default allowlist</a> is <code>'self'</code>.
800
800
1. Set |context|.{{[[contextType]]}} to "[=context type/default=]".
801
801
1. If |options|["{{deviceType}}"][=map/exists=], then set |context|.{{[[deviceType]]}} to |options|["{{deviceType}}"]. Otherwise, set |context|.{{[[deviceType]]}} to "[=device type/cpu=]".
802
802
1. If |options|["{{powerPreference}}"][=map/exists=], then set |context|.{{[[powerPreference]]}} to |options|["{{powerPreference}}"]. Otherwise, set |context|.{{[[powerPreference]]}} to "[=power preference/default=]".
803
+
1. If the user agent cannot support |context|.{{[[contextType]]}}, |context|.{{[[deviceType]]}} and |context|.{{[[powerPreference]]}}, return failure.
803
804
1. Return |context|.
804
805
</div>
805
806
</details>
@@ -812,8 +813,7 @@ Its <a>default allowlist</a> is <code>'self'</code>.
812
813
1. If [=this=]'s [=relevant global object=]'s [=associated Document=] is not [=allowed to use=] the [=webnn-feature|webnn=] feature, return [=a new promise=][=rejected=] with a "{{SecurityError}}" {{DOMException}}.
813
814
1. Let |promise| be [=a new promise=].
814
815
1. Return |promise| and run the following steps [=in parallel=].
815
-
1. Let |context| be the result of [=creating a context=] given |options|.
816
-
1. If [=validating MLContext=] given |context| returns false, [=reject=] |promise| with a "{{NotSupportedError}}" {{DOMException}}.
816
+
1. Let |context| be the result of [=creating a context=] given |options|. If that returns failure, then [=reject=] |promise| with a "{{NotSupportedError}}" {{DOMException}}.
817
817
1. [=Resolve=] |promise| with |context|.
818
818
</div>
819
819
</details>
@@ -826,8 +826,7 @@ Its <a>default allowlist</a> is <code>'self'</code>.
826
826
1. If [=this=]'s [=relevant global object=]'s [=associated Document=] is not [=allowed to use=] the [=webnn-feature|webnn=] feature, return [=a new promise=][=rejected=] with a "{{SecurityError}}" {{DOMException}}.
827
827
1. Let |promise| be [=a new promise=].
828
828
1. Return |promise| and run the following steps [=in parallel=].
829
-
1. Let |context| be the result of [=creating a context=] given |gpuDevice|.
830
-
1. If [=validating MLContext=] given |context| returns false, [=reject=] |promise| with a "{{NotSupportedError}}" {{DOMException}}.
829
+
1. Let |context| be the result of [=creating a context=] given |gpuDevice|. If that returns failure, [=reject=] |promise| with a "{{NotSupportedError}}" {{DOMException}}.
831
830
1. [=Resolve=] |promise| with |context|.
832
831
</div>
833
832
</details>
@@ -840,8 +839,7 @@ Its <a>default allowlist</a> is <code>'self'</code>.
840
839
</summary>
841
840
<div class=algorithm-steps>
842
841
1. If [=this=]'s [=relevant global object=]'s [=associated Document=] is not [=allowed to use=] the [=webnn-feature|webnn=] feature, then [=exception/throw=] a "{{SecurityError}}" {{DOMException}}.
843
-
1. Let |context| be the result [=creating a context=] |options|.
844
-
1. If [=validating MLContext=] given |context| return false, then [=exception/throw=] a "{{NotSupportedError}}" {{DOMException}}.
842
+
1. Let |context| be the result of [=creating a context=] with |options|. If that returns failure, then [=exception/throw=] a "{{NotSupportedError}}" {{DOMException}}.
845
843
1. Return |context|.
846
844
</div>
847
845
</details>
@@ -852,8 +850,7 @@ Its <a>default allowlist</a> is <code>'self'</code>.
852
850
</summary>
853
851
<div class=algorithm-steps>
854
852
1. If [=this=]'s [=relevant global object=]'s [=associated Document=] is not [=allowed to use=] the [=webnn-feature|webnn=] feature, then [=exception/throw=] a "{{SecurityError}}" {{DOMException}}.
855
-
1. Let |context| be the result [=creating a context=] with |gpuDevice|.
856
-
1. If [=validating MLContext=] given |context| return false, then [=exception/throw=] a "{{NotSupportedError}}" {{DOMException}}.
853
+
1. Let |context| be the result of [=creating a context=] with |gpuDevice|. If that returns failure, then [=exception/throw=] a "{{NotSupportedError}}" {{DOMException}}.
857
854
1. Return |context|.
858
855
</div>
859
856
</details>
@@ -1066,9 +1063,9 @@ The <dfn>power preference</dfn> indicates preference as related to power consump
1066
1063
<dl dfn-for="power preference">
1067
1064
<dt>"<dfn>default</dfn>"</dt>
1068
1065
<dd>Let the user agent select the most suitable behavior.</dd>
1069
-
<dt>"<dfn>high-performance</dfn>"</dt>
1066
+
<dt>"<dfn ignore>high-performance</dfn>"</dt>
1070
1067
<dd>Prioritizes execution speed over power consumption.</dd>
1071
-
<dt>"<dfn>low-power</dfn>"</dt>
1068
+
<dt>"<dfn ignore>low-power</dfn>"</dt>
1072
1069
<dd>Prioritizes power consumption over other considerations such as execution speed.</dd>
1073
1070
</dl>
1074
1071
@@ -1098,21 +1095,6 @@ interface MLContext {};
1098
1095
When the {{[[contextType]]}} is set to [=context type/default=] with the {{MLContextOptions}}.{{deviceType}} set to [=device type/gpu=], the user agent is responsible for creating an internal GPU device that operates within the context and is capable of ML workload submission on behalf of the calling application. In this setting however, only {{ArrayBufferView}} inputs and outputs are allowed in and out of the graph execution since the application has no way to know what type of internal GPU device is being created on their behalf. In this case, the user agent is responsible for automatic uploads and downloads of the inputs and outputs to and from the GPU memory using this said internal device.
To <dfn>validate MLContext</dfn>, given |context|, run these steps:
1106
-
</summary>
1107
-
<div class=algorithm-steps>
1108
-
1. If |context|.{{[[contextType]]}} is not "[=context type/webgpu=]" or "[=context type/default=]", return false.
1109
-
1. If |context|.{{[[deviceType]]}} is not "[=device type/cpu=]" or "[=device type/gpu=]", return false.
1110
-
1. If |context|.{{[[powerPreference]]}} is not "[=power preference/default=]" or "[=power preference/high-performance=]" or "[=power preference/low-power=]", return false.
1111
-
1. If the user agent cannot support |context|.{{[[contextType]]}}, |context|.{{[[deviceType]]}} and |context|.{{[[powerPreference]]}}, return false.
Synchronously carries out the computational workload of a compiled graph {{MLGraph}} on the calling thread, which must be a worker thread, to produce results as defined by the operations in the graph. This method of execution requires an {{MLContext}} created with {{MLContextOptions}}. Otherwise, it [=exception/throws=] an "{{OperationError}}" {{DOMException}}.
1118
1100
@@ -1446,11 +1428,10 @@ Both {{MLGraphBuilder}}.{{MLGraphBuilder/build()}} and {{MLGraphBuilder}}.{{MLGr
1446
1428
1447
1429
<details open algorithm>
1448
1430
<summary>
1449
-
The [=new=]<dfn constructor for=MLGraphBuilder lt="MLGraphBuilder(context)">MLGraphBuilder(context)</dfn> constructor steps are:
1431
+
The [=new=]<dfn constructor for=MLGraphBuilder lt="MLGraphBuilder(context)">MLGraphBuilder(|context|)</dfn> constructor steps are:
1450
1432
</summary>
1451
1433
<div class=algorithm-steps>
1452
1434
1. If [=this=]'s [=relevant global object=]'s [=associated Document=] is not [=allowed to use=] the [=webnn-feature|webnn=] feature, then [=exception/throw=] a "{{SecurityError}}" {{DOMException}}.
1453
-
1. If [=validating MLContext=] given |context| returns false, then [=exception/throw=] a "{{TypeError}}".
1454
1435
1. Set [=this=].{{MLGraphBuilder/[[context]]}} to |context|.
0 commit comments