mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
fix cts_runner (#6840)
* fix: unbreak compute_pass execution and state * fix: cts_runner js_runtime needs Permissions struct * fix: ColorWrites bitflags serde --------- Co-authored-by: turbocrime <turbocrime@users.noreply.github.com> Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
This commit is contained in:
parent
c655d5290b
commit
1aabf22e7a
@ -141,8 +141,6 @@ mod native {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
js_runtime.op_state().borrow_mut().put(Permissions {});
|
|
||||||
|
|
||||||
let mod_id = js_runtime.load_main_es_module(&specifier).await?;
|
let mod_id = js_runtime.load_main_es_module(&specifier).await?;
|
||||||
let result = js_runtime.mod_evaluate(mod_id);
|
let result = js_runtime.mod_evaluate(mod_id);
|
||||||
js_runtime.run_event_loop(Default::default()).await?;
|
js_runtime.run_event_loop(Default::default()).await?;
|
||||||
@ -157,6 +155,9 @@ mod native {
|
|||||||
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/src/bootstrap.js",
|
esm_entry_point = "ext:cts_runner/src/bootstrap.js",
|
||||||
esm = ["src/bootstrap.js"],
|
esm = ["src/bootstrap.js"],
|
||||||
|
state = |state| {
|
||||||
|
state.put(Permissions {});
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
#[op2(fast)]
|
#[op2(fast)]
|
||||||
|
|||||||
@ -32,7 +32,7 @@ pub fn op_webgpu_compute_pass_set_pipeline(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_set_pipeline(
|
.compute_pass_set_pipeline(
|
||||||
&mut compute_pass_resource.0.borrow_mut(),
|
&mut compute_pass_resource.0.borrow_mut(),
|
||||||
compute_pipeline_resource.1,
|
compute_pipeline_resource.1,
|
||||||
@ -55,7 +55,7 @@ pub fn op_webgpu_compute_pass_dispatch_workgroups(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_dispatch_workgroups(&mut compute_pass_resource.0.borrow_mut(), x, y, z)?;
|
.compute_pass_dispatch_workgroups(&mut compute_pass_resource.0.borrow_mut(), x, y, z)?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -77,7 +77,7 @@ pub fn op_webgpu_compute_pass_dispatch_workgroups_indirect(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_dispatch_workgroups_indirect(
|
.compute_pass_dispatch_workgroups_indirect(
|
||||||
&mut compute_pass_resource.0.borrow_mut(),
|
&mut compute_pass_resource.0.borrow_mut(),
|
||||||
buffer_resource.1,
|
buffer_resource.1,
|
||||||
@ -91,6 +91,7 @@ pub fn op_webgpu_compute_pass_dispatch_workgroups_indirect(
|
|||||||
#[serde]
|
#[serde]
|
||||||
pub fn op_webgpu_compute_pass_end(
|
pub fn op_webgpu_compute_pass_end(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
|
#[smi] _command_encoder_rid: ResourceId,
|
||||||
#[smi] compute_pass_rid: ResourceId,
|
#[smi] compute_pass_rid: ResourceId,
|
||||||
) -> Result<WebGpuResult, AnyError> {
|
) -> Result<WebGpuResult, AnyError> {
|
||||||
let compute_pass_resource = state
|
let compute_pass_resource = state
|
||||||
@ -98,7 +99,7 @@ pub fn op_webgpu_compute_pass_end(
|
|||||||
.take::<WebGpuComputePass>(compute_pass_rid)?;
|
.take::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_end(&mut compute_pass_resource.0.borrow_mut())?;
|
.compute_pass_end(&mut compute_pass_resource.0.borrow_mut())?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -132,7 +133,7 @@ pub fn op_webgpu_compute_pass_set_bind_group(
|
|||||||
let dynamic_offsets_data: &[u32] = &dynamic_offsets_data[start..start + len];
|
let dynamic_offsets_data: &[u32] = &dynamic_offsets_data[start..start + len];
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_set_bind_group(
|
.compute_pass_set_bind_group(
|
||||||
&mut compute_pass_resource.0.borrow_mut(),
|
&mut compute_pass_resource.0.borrow_mut(),
|
||||||
index,
|
index,
|
||||||
@ -155,7 +156,7 @@ pub fn op_webgpu_compute_pass_push_debug_group(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_push_debug_group(
|
.compute_pass_push_debug_group(
|
||||||
&mut compute_pass_resource.0.borrow_mut(),
|
&mut compute_pass_resource.0.borrow_mut(),
|
||||||
group_label,
|
group_label,
|
||||||
@ -176,7 +177,7 @@ pub fn op_webgpu_compute_pass_pop_debug_group(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_pop_debug_group(&mut compute_pass_resource.0.borrow_mut())?;
|
.compute_pass_pop_debug_group(&mut compute_pass_resource.0.borrow_mut())?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -194,7 +195,7 @@ pub fn op_webgpu_compute_pass_insert_debug_marker(
|
|||||||
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
.get::<WebGpuComputePass>(compute_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.compute_pass_insert_debug_marker(
|
.compute_pass_insert_debug_marker(
|
||||||
&mut compute_pass_resource.0.borrow_mut(),
|
&mut compute_pass_resource.0.borrow_mut(),
|
||||||
marker_label,
|
marker_label,
|
||||||
|
|||||||
@ -50,9 +50,7 @@ pub fn op_webgpu_render_pass_set_viewport(
|
|||||||
.resource_table
|
.resource_table
|
||||||
.get::<WebGpuRenderPass>(args.render_pass_rid)?;
|
.get::<WebGpuRenderPass>(args.render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state.borrow::<super::Instance>().render_pass_set_viewport(
|
||||||
.borrow::<wgpu_core::global::Global>()
|
|
||||||
.render_pass_set_viewport(
|
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
args.x,
|
args.x,
|
||||||
args.y,
|
args.y,
|
||||||
@ -80,7 +78,7 @@ pub fn op_webgpu_render_pass_set_scissor_rect(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_scissor_rect(
|
.render_pass_set_scissor_rect(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
x,
|
x,
|
||||||
@ -104,7 +102,7 @@ pub fn op_webgpu_render_pass_set_blend_constant(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_blend_constant(&mut render_pass_resource.0.borrow_mut(), color)?;
|
.render_pass_set_blend_constant(&mut render_pass_resource.0.borrow_mut(), color)?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -122,7 +120,7 @@ pub fn op_webgpu_render_pass_set_stencil_reference(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_stencil_reference(&mut render_pass_resource.0.borrow_mut(), reference)?;
|
.render_pass_set_stencil_reference(&mut render_pass_resource.0.borrow_mut(), reference)?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -140,7 +138,7 @@ pub fn op_webgpu_render_pass_begin_occlusion_query(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_begin_occlusion_query(&mut render_pass_resource.0.borrow_mut(), query_index)?;
|
.render_pass_begin_occlusion_query(&mut render_pass_resource.0.borrow_mut(), query_index)?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -157,7 +155,7 @@ pub fn op_webgpu_render_pass_end_occlusion_query(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_end_occlusion_query(&mut render_pass_resource.0.borrow_mut())?;
|
.render_pass_end_occlusion_query(&mut render_pass_resource.0.borrow_mut())?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -185,7 +183,7 @@ pub fn op_webgpu_render_pass_execute_bundles(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_execute_bundles(&mut render_pass_resource.0.borrow_mut(), &bundles)?;
|
.render_pass_execute_bundles(&mut render_pass_resource.0.borrow_mut(), &bundles)?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -195,6 +193,7 @@ pub fn op_webgpu_render_pass_execute_bundles(
|
|||||||
#[serde]
|
#[serde]
|
||||||
pub fn op_webgpu_render_pass_end(
|
pub fn op_webgpu_render_pass_end(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
|
#[smi] _command_encoder_rid: ResourceId,
|
||||||
#[smi] render_pass_rid: ResourceId,
|
#[smi] render_pass_rid: ResourceId,
|
||||||
) -> Result<WebGpuResult, deno_core::error::AnyError> {
|
) -> Result<WebGpuResult, deno_core::error::AnyError> {
|
||||||
let render_pass_resource = state
|
let render_pass_resource = state
|
||||||
@ -202,7 +201,7 @@ pub fn op_webgpu_render_pass_end(
|
|||||||
.take::<WebGpuRenderPass>(render_pass_rid)?;
|
.take::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_end(&mut render_pass_resource.0.borrow_mut())?;
|
.render_pass_end(&mut render_pass_resource.0.borrow_mut())?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -236,7 +235,7 @@ pub fn op_webgpu_render_pass_set_bind_group(
|
|||||||
let dynamic_offsets_data: &[u32] = &dynamic_offsets_data[start..start + len];
|
let dynamic_offsets_data: &[u32] = &dynamic_offsets_data[start..start + len];
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_bind_group(
|
.render_pass_set_bind_group(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
index,
|
index,
|
||||||
@ -259,7 +258,7 @@ pub fn op_webgpu_render_pass_push_debug_group(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_push_debug_group(
|
.render_pass_push_debug_group(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
group_label,
|
group_label,
|
||||||
@ -280,7 +279,7 @@ pub fn op_webgpu_render_pass_pop_debug_group(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_pop_debug_group(&mut render_pass_resource.0.borrow_mut())?;
|
.render_pass_pop_debug_group(&mut render_pass_resource.0.borrow_mut())?;
|
||||||
|
|
||||||
Ok(WebGpuResult::empty())
|
Ok(WebGpuResult::empty())
|
||||||
@ -298,7 +297,7 @@ pub fn op_webgpu_render_pass_insert_debug_marker(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_insert_debug_marker(
|
.render_pass_insert_debug_marker(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
marker_label,
|
marker_label,
|
||||||
@ -322,9 +321,7 @@ pub fn op_webgpu_render_pass_set_pipeline(
|
|||||||
.resource_table
|
.resource_table
|
||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state.borrow::<super::Instance>().render_pass_set_pipeline(
|
||||||
.borrow::<wgpu_core::global::Global>()
|
|
||||||
.render_pass_set_pipeline(
|
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
render_pipeline_resource.1,
|
render_pipeline_resource.1,
|
||||||
)?;
|
)?;
|
||||||
@ -358,7 +355,7 @@ pub fn op_webgpu_render_pass_set_index_buffer(
|
|||||||
};
|
};
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_index_buffer(
|
.render_pass_set_index_buffer(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
buffer_resource.1,
|
buffer_resource.1,
|
||||||
@ -396,7 +393,7 @@ pub fn op_webgpu_render_pass_set_vertex_buffer(
|
|||||||
};
|
};
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_set_vertex_buffer(
|
.render_pass_set_vertex_buffer(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
slot,
|
slot,
|
||||||
@ -422,9 +419,7 @@ pub fn op_webgpu_render_pass_draw(
|
|||||||
.resource_table
|
.resource_table
|
||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state.borrow::<super::Instance>().render_pass_draw(
|
||||||
.borrow::<wgpu_core::global::Global>()
|
|
||||||
.render_pass_draw(
|
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
vertex_count,
|
vertex_count,
|
||||||
instance_count,
|
instance_count,
|
||||||
@ -450,9 +445,7 @@ pub fn op_webgpu_render_pass_draw_indexed(
|
|||||||
.resource_table
|
.resource_table
|
||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state.borrow::<super::Instance>().render_pass_draw_indexed(
|
||||||
.borrow::<wgpu_core::global::Global>()
|
|
||||||
.render_pass_draw_indexed(
|
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
index_count,
|
index_count,
|
||||||
instance_count,
|
instance_count,
|
||||||
@ -480,7 +473,7 @@ pub fn op_webgpu_render_pass_draw_indirect(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_draw_indirect(
|
.render_pass_draw_indirect(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
buffer_resource.1,
|
buffer_resource.1,
|
||||||
@ -506,7 +499,7 @@ pub fn op_webgpu_render_pass_draw_indexed_indirect(
|
|||||||
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
.get::<WebGpuRenderPass>(render_pass_rid)?;
|
||||||
|
|
||||||
state
|
state
|
||||||
.borrow::<wgpu_core::global::Global>()
|
.borrow::<super::Instance>()
|
||||||
.render_pass_draw_indexed_indirect(
|
.render_pass_draw_indexed_indirect(
|
||||||
&mut render_pass_resource.0.borrow_mut(),
|
&mut render_pass_resource.0.borrow_mut(),
|
||||||
buffer_resource.1,
|
buffer_resource.1,
|
||||||
|
|||||||
@ -4701,16 +4701,18 @@ fn texture_format_deserialize() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Color write mask. Disabled color channels will not be written to.
|
||||||
|
///
|
||||||
|
/// Corresponds to [WebGPU `GPUColorWriteFlags`](
|
||||||
|
/// https://gpuweb.github.io/gpuweb/#typedefdef-gpucolorwriteflags).
|
||||||
|
#[repr(transparent)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||||
|
#[cfg_attr(feature = "serde", serde(transparent))]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||||
|
pub struct ColorWrites(u32);
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
/// Color write mask. Disabled color channels will not be written to.
|
impl ColorWrites: u32 {
|
||||||
///
|
|
||||||
/// Corresponds to [WebGPU `GPUColorWriteFlags`](
|
|
||||||
/// https://gpuweb.github.io/gpuweb/#typedefdef-gpucolorwriteflags).
|
|
||||||
#[repr(transparent)]
|
|
||||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
|
||||||
#[cfg_attr(feature = "serde", serde(transparent))]
|
|
||||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
|
||||||
pub struct ColorWrites: u32 {
|
|
||||||
/// Enable red channel writes
|
/// Enable red channel writes
|
||||||
const RED = 1 << 0;
|
const RED = 1 << 0;
|
||||||
/// Enable green channel writes
|
/// Enable green channel writes
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user