Fix deno_webgpu & cts_runner (#5459)

* fix cts_runner

* fix
This commit is contained in:
Leo Kettmeir 2024-04-01 09:39:02 -07:00 committed by GitHub
parent ed7d9de439
commit c2fb18afb8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 105 additions and 81 deletions

90
Cargo.lock generated
View File

@ -708,6 +708,12 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "cooked-waker"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147be55d677052dabc6b22252d5dd0fd4c29c8c27aa4f2fbef0f94aa003b406f"
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.4" version = "0.9.4"
@ -970,26 +976,32 @@ dependencies = [
[[package]] [[package]]
name = "deno_console" name = "deno_console"
version = "0.125.0" version = "0.143.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92543d4f4d82f2350123bd4b60e97a73aba1a9bbca8c931e827459096dedabba" checksum = "1f770d8deb0eb0bfd596d242d9eaef5312ef57f0130964cb53c7f6a8107d13be"
dependencies = [ dependencies = [
"deno_core", "deno_core",
] ]
[[package]] [[package]]
name = "deno_core" name = "deno_core"
version = "0.232.0" version = "0.272.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "229ffd108e028b148a1a5a6122f771bc7c37094170226f44b8b93b3a9b79d114" checksum = "07093891f2af763023614cfe2d1ce5f9ce5a7920c4fcf2f00911bd0d93083523"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bincode",
"bit-set",
"bit-vec",
"bytes", "bytes",
"cooked-waker",
"deno_core_icudata",
"deno_ops", "deno_ops",
"deno_unsync", "deno_unsync",
"futures", "futures",
"libc", "libc",
"log", "log",
"memoffset 0.9.1",
"parking_lot", "parking_lot",
"pin-project", "pin-project",
"serde", "serde",
@ -997,16 +1009,23 @@ dependencies = [
"serde_v8", "serde_v8",
"smallvec", "smallvec",
"sourcemap", "sourcemap",
"static_assertions",
"tokio", "tokio",
"url", "url",
"v8", "v8",
] ]
[[package]] [[package]]
name = "deno_ops" name = "deno_core_icudata"
version = "0.108.0" version = "0.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7dde627916f8539f3f0d2e754dda40810c8ca4d655f2eaac1ef54785a12fd27" checksum = "a13951ea98c0a4c372f162d669193b4c9d991512de9f2381dd161027f34b26b1"
[[package]]
name = "deno_ops"
version = "0.148.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bc73fc07ad26e71715d5a726d1dd228587c0d121a591b1931a0fcf958a2ec3b"
dependencies = [ dependencies = [
"proc-macro-rules", "proc-macro-rules",
"proc-macro2", "proc-macro2",
@ -1028,9 +1047,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_url" name = "deno_url"
version = "0.125.0" version = "0.143.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25ec92af225230fe4a429de0b5891f35b1ba5f143f8c1605bb7b9d1cb767ac73" checksum = "39d9e6ffd6a7157bfd3cf1385c59232e49587c9bbb898e64010f7f082242a203"
dependencies = [ dependencies = [
"deno_core", "deno_core",
"serde", "serde",
@ -1039,9 +1058,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_web" name = "deno_web"
version = "0.156.0" version = "0.174.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3aeef7522f46b3442e24a750ef914ca54aade2110d6540a66e4ea17b4eb68bb7" checksum = "708666b5b346e6880c1372006615814db7fc5ef36bd1785f0b0e4f8617082999"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64-simd 0.8.0", "base64-simd 0.8.0",
@ -1071,9 +1090,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_webidl" name = "deno_webidl"
version = "0.125.0" version = "0.143.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74b1a86e9a1dec0dc5d4dc132faee72ac50297f41e30f7cab57dd52dda380eed" checksum = "bddad93aa68e3c3c2d36976cd401af27a6ce750c23060e02401daf240f2acbe2"
dependencies = [ dependencies = [
"deno_core", "deno_core",
] ]
@ -1381,9 +1400,9 @@ dependencies = [
[[package]] [[package]]
name = "fslock" name = "fslock"
version = "0.1.8" version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57eafdd0c16f57161105ae1b98a1238f97645f2f588438b2949c99a2af9616bf" checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb"
dependencies = [ dependencies = [
"libc", "libc",
"winapi", "winapi",
@ -1675,6 +1694,15 @@ dependencies = [
"bitflags 2.4.2", "bitflags 2.4.2",
] ]
[[package]]
name = "gzip-header"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95cc527b92e6029a62960ad99aa8a6660faa4555fe5f731aab13aa6a921795a2"
dependencies = [
"crc32fast",
]
[[package]] [[package]]
name = "half" name = "half"
version = "2.4.0" version = "2.4.0"
@ -2048,6 +2076,15 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "memoffset"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
dependencies = [
"autocfg",
]
[[package]] [[package]]
name = "metal" name = "metal"
version = "0.27.0" version = "0.27.0"
@ -2251,7 +2288,7 @@ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"cfg-if", "cfg-if",
"libc", "libc",
"memoffset", "memoffset 0.6.5",
] ]
[[package]] [[package]]
@ -2264,7 +2301,7 @@ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"cfg-if", "cfg-if",
"libc", "libc",
"memoffset", "memoffset 0.6.5",
] ]
[[package]] [[package]]
@ -3057,12 +3094,11 @@ dependencies = [
[[package]] [[package]]
name = "serde_v8" name = "serde_v8"
version = "0.141.0" version = "0.181.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc689cb316d67b200e9f7449ce76cceb7e483e0f828d1a9c3d057c4367b6c26e" checksum = "fd25bb66a20a1a405fb3733aaaf8a8a77a14fd55c8f5fd9db2a2e95bbd7eeab9"
dependencies = [ dependencies = [
"bytes", "bytes",
"derive_more",
"num-bigint", "num-bigint",
"serde", "serde",
"smallvec", "smallvec",
@ -3656,12 +3692,15 @@ dependencies = [
[[package]] [[package]]
name = "v8" name = "v8"
version = "0.81.0" version = "0.89.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b75f5f378b9b54aff3b10da8170d26af4cfd217f644cf671badcd13af5db4beb" checksum = "fe2197fbef82c98f7953d13568a961d4e1c663793b5caf3c74455a13918cdf33"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 2.4.2",
"fslock", "fslock",
"gzip-header",
"home",
"miniz_oxide",
"once_cell", "once_cell",
"which", "which",
] ]
@ -4209,14 +4248,15 @@ dependencies = [
[[package]] [[package]]
name = "which" name = "which"
version = "4.4.2" version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14"
dependencies = [ dependencies = [
"either", "either",
"home", "home",
"once_cell", "once_cell",
"rustix", "rustix",
"windows-sys 0.48.0",
] ]
[[package]] [[package]]

View File

@ -165,11 +165,11 @@ web-sys = "0.3.69"
web-time = "0.2.4" web-time = "0.2.4"
# deno dependencies # deno dependencies
deno_console = "0.125.0" deno_console = "0.143.0"
deno_core = "0.232.0" deno_core = "0.272.0"
deno_url = "0.125.0" deno_url = "0.143.0"
deno_web = "0.156.0" deno_web = "0.174.0"
deno_webidl = "0.125.0" deno_webidl = "0.143.0"
deno_webgpu = { version = "0.85.0", path = "./deno_webgpu" } deno_webgpu = { version = "0.85.0", path = "./deno_webgpu" }
tokio = "1.36.0" tokio = "1.36.0"
termcolor = "1.4.1" termcolor = "1.4.1"

View File

@ -5,8 +5,7 @@
// //
delete Object.prototype.__proto__; delete Object.prototype.__proto__;
const core = Deno.core; import { core, primordials } from "ext:core/mod.js";
const primordials = globalThis.__bootstrap.primordials;
const { const {
Error, Error,
ObjectDefineProperty, ObjectDefineProperty,
@ -25,9 +24,10 @@ import * as base64 from "ext:deno_web/05_base64.js";
import * as encoding from "ext:deno_web/08_text_encoding.js"; import * as encoding from "ext:deno_web/08_text_encoding.js";
import { Console } from "ext:deno_console/01_console.js"; import { Console } from "ext:deno_console/01_console.js";
import * as url from "ext:deno_url/00_url.js"; import * as url from "ext:deno_url/00_url.js";
import DOMException from "ext:deno_web/01_dom_exception.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js";
import * as performance from "ext:deno_web/15_performance.js"; import * as performance from "ext:deno_web/15_performance.js";
import * as webgpu from "ext:deno_webgpu/01_webgpu.js"; import * as webgpu from "ext:deno_webgpu/01_webgpu.js";
import * as imageData from "ext:deno_web/16_image_data.js";
// imports needed to pass module evaluation // imports needed to pass module evaluation
import "ext:deno_url/01_urlpattern.js"; import "ext:deno_url/01_urlpattern.js";
@ -42,8 +42,6 @@ import "ext:deno_web/14_compression.js";
let globalThis_; let globalThis_;
const { BadResource, Interrupted } = core;
class NotFound extends Error { class NotFound extends Error {
constructor(msg) { constructor(msg) {
super(msg); super(msg);
@ -183,6 +181,7 @@ const windowOrWorkerGlobalScope = {
clearInterval: util.writable(timers.clearInterval), clearInterval: util.writable(timers.clearInterval),
clearTimeout: util.writable(timers.clearTimeout), clearTimeout: util.writable(timers.clearTimeout),
performance: util.writable(performance.performance), performance: util.writable(performance.performance),
ImageData: core.propNonEnumerable(imageData.ImageData),
GPU: util.nonEnumerable(webgpu.GPU), GPU: util.nonEnumerable(webgpu.GPU),
GPUAdapter: util.nonEnumerable(webgpu.GPUAdapter), GPUAdapter: util.nonEnumerable(webgpu.GPUAdapter),
@ -248,10 +247,8 @@ core.registerErrorClass("NotFound", NotFound);
core.registerErrorClass("AlreadyExists", AlreadyExists); core.registerErrorClass("AlreadyExists", AlreadyExists);
core.registerErrorClass("InvalidData", InvalidData); core.registerErrorClass("InvalidData", InvalidData);
core.registerErrorClass("TimedOut", TimedOut); core.registerErrorClass("TimedOut", TimedOut);
core.registerErrorClass("Interrupted", Interrupted);
core.registerErrorClass("WriteZero", WriteZero); core.registerErrorClass("WriteZero", WriteZero);
core.registerErrorClass("UnexpectedEof", UnexpectedEof); core.registerErrorClass("UnexpectedEof", UnexpectedEof);
core.registerErrorClass("BadResource", BadResource);
core.registerErrorClass("NotSupported", NotSupported); core.registerErrorClass("NotSupported", NotSupported);
core.registerErrorBuilder( core.registerErrorBuilder(
"DOMExceptionOperationError", "DOMExceptionOperationError",

View File

@ -45,13 +45,13 @@ mod native {
], ],
..Default::default() ..Default::default()
}; };
let mut isolate = JsRuntime::new(options); let mut js_runtime = JsRuntime::new(options);
let args = args_iter.collect::<Vec<String>>(); let args = args_iter.collect::<Vec<String>>();
let cfg = json!({"args": args, "cwd": env::current_dir().unwrap().to_string_lossy() }); let cfg = json!({"args": args, "cwd": env::current_dir().unwrap().to_string_lossy() });
{ {
let context = isolate.main_context(); let context = js_runtime.main_context();
let scope = &mut isolate.handle_scope(); let scope = &mut js_runtime.handle_scope();
let context_local = v8::Local::new(scope, context); let context_local = v8::Local::new(scope, context);
let global_obj = context_local.global(scope); let global_obj = context_local.global(scope);
let bootstrap_str = v8::String::new(scope, "bootstrap").unwrap(); let bootstrap_str = v8::String::new(scope, "bootstrap").unwrap();
@ -65,20 +65,12 @@ mod native {
.unwrap(); .unwrap();
} }
isolate.op_state().borrow_mut().put(Permissions {}); js_runtime.op_state().borrow_mut().put(Permissions {});
let mod_id = isolate.load_main_module(&specifier, None).await?; let mod_id = js_runtime.load_main_es_module(&specifier).await?;
let mod_rx = isolate.mod_evaluate(mod_id); let result = js_runtime.mod_evaluate(mod_id);
js_runtime.run_event_loop(Default::default()).await?;
let rx = tokio::spawn(async move { result.await?;
match mod_rx.await {
Ok(err @ Err(_)) => err,
_ => Ok(()),
}
});
isolate.run_event_loop(false).await?;
rx.await.unwrap()?;
Ok(()) Ok(())
} }
@ -87,7 +79,7 @@ mod native {
cts_runner, cts_runner,
deps = [deno_webidl, deno_web], deps = [deno_webidl, deno_web],
ops = [op_exit, op_read_file_sync, op_write_file_sync], ops = [op_exit, op_read_file_sync, op_write_file_sync],
esm_entry_point = "ext:cts_runner/bootstrap.js", esm_entry_point = "ext:cts_runner/src/bootstrap.js",
esm = ["src/bootstrap.js"], esm = ["src/bootstrap.js"],
); );

View File

@ -6,12 +6,11 @@
/// <reference path="../web/lib.deno_web.d.ts" /> /// <reference path="../web/lib.deno_web.d.ts" />
/// <reference path="./lib.deno_webgpu.d.ts" /> /// <reference path="./lib.deno_webgpu.d.ts" />
const core = globalThis.Deno.core; import { core, primordials } from "ext:core/mod.js";
const ops = core.ops; import * as ops from "ext:core/ops";
const primordials = globalThis.__bootstrap.primordials;
import * as webidl from "ext:deno_webidl/00_webidl.js"; import * as webidl from "ext:deno_webidl/00_webidl.js";
import { EventTarget } from "ext:deno_web/02_event.js"; import { EventTarget } from "ext:deno_web/02_event.js";
import DOMException from "ext:deno_web/01_dom_exception.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js";
import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; import { createFilteredInspectProxy } from "ext:deno_console/01_console.js";
const { const {
ArrayBuffer, ArrayBuffer,
@ -247,8 +246,7 @@ class GPU {
"Argument 1", "Argument 1",
); );
const { err, ...data } = await core.opAsync( const { err, ...data } = await ops.op_webgpu_request_adapter(
"op_webgpu_request_adapter",
options.powerPreference, options.powerPreference,
options.forceFallbackAdapter, options.forceFallbackAdapter,
); );
@ -338,8 +336,7 @@ class GPUAdapter {
} }
} }
const { rid, features, limits } = await core.opAsync( const { rid, features, limits } = await ops.op_webgpu_request_device(
"op_webgpu_request_device",
this[_adapter].rid, this[_adapter].rid,
descriptor.label, descriptor.label,
requiredFeatures, requiredFeatures,
@ -377,10 +374,7 @@ class GPUAdapter {
architecture, architecture,
device, device,
description, description,
} = await core.opAsync( } = await ops.op_webgpu_request_adapter_info(this[_adapter].rid);
"op_webgpu_request_adapter_info",
this[_adapter].rid,
);
const adapterInfo = webidl.createBranded(GPUAdapterInfo); const adapterInfo = webidl.createBranded(GPUAdapterInfo);
adapterInfo[_vendor] = unmaskHints.includes("vendor") ? vendor : ""; adapterInfo[_vendor] = unmaskHints.includes("vendor") ? vendor : "";
@ -677,6 +671,7 @@ class GPUSupportedFeatures {
constructor() { constructor() {
webidl.illegalConstructor(); webidl.illegalConstructor();
} }
[SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) {
if (ObjectPrototypeIsPrototypeOf(GPUSupportedFeaturesPrototype, this)) { if (ObjectPrototypeIsPrototypeOf(GPUSupportedFeaturesPrototype, this)) {
return `${this.constructor.name} ${ return `${this.constructor.name} ${
@ -687,23 +682,23 @@ class GPUSupportedFeatures {
return `${this.constructor.name} ${inspect({}, inspectOptions)}`; return `${this.constructor.name} ${inspect({}, inspectOptions)}`;
} }
} }
}
const GPUSupportedFeaturesPrototype = GPUSupportedFeatures.prototype;
const GPUSupportedFeaturesPrototype = GPUSupportedFeatures.prototype; /**
* @param {string | undefined} reason
* @param {string} message
* @returns {GPUDeviceLostInfo}
*/
function createGPUDeviceLostInfo(reason, message) {
/** @type {GPUDeviceLostInfo} */
const deviceLostInfo = webidl.createBranded(GPUDeviceLostInfo);
deviceLostInfo[_reason] = reason ?? "unknown";
deviceLostInfo[_message] = message;
return deviceLostInfo;
}
/** class GPUDeviceLostInfo {
* @param {string | undefined} reason
* @param {string} message
* @returns {GPUDeviceLostInfo}
*/
function createGPUDeviceLostInfo(reason, message) {
/** @type {GPUDeviceLostInfo} */
const deviceLostInfo = webidl.createBranded(GPUDeviceLostInfo);
deviceLostInfo[_reason] = reason ?? "unknown";
deviceLostInfo[_message] = message;
return deviceLostInfo;
}
class GPUDeviceLostInfo {
/** @type {string} */ /** @type {string} */
[_reason]; [_reason];
/** @type {string} */ /** @type {string} */