summaryrefslogtreecommitdiff
path: root/runtime/ops/webgpu.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/webgpu.rs')
-rw-r--r--runtime/ops/webgpu.rs421
1 files changed, 421 insertions, 0 deletions
diff --git a/runtime/ops/webgpu.rs b/runtime/ops/webgpu.rs
new file mode 100644
index 000000000..d3b9cfa19
--- /dev/null
+++ b/runtime/ops/webgpu.rs
@@ -0,0 +1,421 @@
+use deno_webgpu::*;
+
+pub fn init(rt: &mut deno_core::JsRuntime) {
+ {
+ let op_state = rt.op_state();
+ let mut state = op_state.borrow_mut();
+ state.put(wgpu_core::hub::Global::new(
+ "webgpu",
+ wgpu_core::hub::IdentityManagerFactory,
+ wgpu_types::BackendBit::PRIMARY,
+ ));
+ let unstable_checker = state.borrow::<super::UnstableChecker>();
+ let unstable = unstable_checker.unstable;
+ state.put(Unstable(unstable));
+ }
+
+ super::reg_json_async(
+ rt,
+ "op_webgpu_request_adapter",
+ op_webgpu_request_adapter,
+ );
+ super::reg_json_async(
+ rt,
+ "op_webgpu_request_device",
+ op_webgpu_request_device,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_query_set",
+ op_webgpu_create_query_set,
+ );
+
+ {
+ // buffer
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_buffer",
+ buffer::op_webgpu_create_buffer,
+ );
+ super::reg_json_async(
+ rt,
+ "op_webgpu_buffer_get_map_async",
+ buffer::op_webgpu_buffer_get_map_async,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_buffer_get_mapped_range",
+ buffer::op_webgpu_buffer_get_mapped_range,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_buffer_unmap",
+ buffer::op_webgpu_buffer_unmap,
+ );
+ }
+ {
+ // texture
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_texture",
+ texture::op_webgpu_create_texture,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_texture_view",
+ texture::op_webgpu_create_texture_view,
+ );
+ }
+ {
+ // sampler
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_sampler",
+ sampler::op_webgpu_create_sampler,
+ );
+ }
+ {
+ // binding
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_bind_group_layout",
+ binding::op_webgpu_create_bind_group_layout,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_pipeline_layout",
+ binding::op_webgpu_create_pipeline_layout,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_bind_group",
+ binding::op_webgpu_create_bind_group,
+ );
+ }
+ {
+ // pipeline
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_compute_pipeline",
+ pipeline::op_webgpu_create_compute_pipeline,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pipeline_get_bind_group_layout",
+ pipeline::op_webgpu_compute_pipeline_get_bind_group_layout,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_render_pipeline",
+ pipeline::op_webgpu_create_render_pipeline,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pipeline_get_bind_group_layout",
+ pipeline::op_webgpu_render_pipeline_get_bind_group_layout,
+ );
+ }
+ {
+ // command_encoder
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_command_encoder",
+ command_encoder::op_webgpu_create_command_encoder,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_begin_render_pass",
+ command_encoder::op_webgpu_command_encoder_begin_render_pass,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_begin_compute_pass",
+ command_encoder::op_webgpu_command_encoder_begin_compute_pass,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_copy_buffer_to_buffer",
+ command_encoder::op_webgpu_command_encoder_copy_buffer_to_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_copy_buffer_to_texture",
+ command_encoder::op_webgpu_command_encoder_copy_buffer_to_texture,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_copy_texture_to_buffer",
+ command_encoder::op_webgpu_command_encoder_copy_texture_to_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_copy_texture_to_texture",
+ command_encoder::op_webgpu_command_encoder_copy_texture_to_texture,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_push_debug_group",
+ command_encoder::op_webgpu_command_encoder_push_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_pop_debug_group",
+ command_encoder::op_webgpu_command_encoder_pop_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_insert_debug_marker",
+ command_encoder::op_webgpu_command_encoder_insert_debug_marker,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_write_timestamp",
+ command_encoder::op_webgpu_command_encoder_write_timestamp,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_resolve_query_set",
+ command_encoder::op_webgpu_command_encoder_resolve_query_set,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_command_encoder_finish",
+ command_encoder::op_webgpu_command_encoder_finish,
+ );
+ }
+ {
+ // render_pass
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_viewport",
+ render_pass::op_webgpu_render_pass_set_viewport,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_scissor_rect",
+ render_pass::op_webgpu_render_pass_set_scissor_rect,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_blend_color",
+ render_pass::op_webgpu_render_pass_set_blend_color,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_stencil_reference",
+ render_pass::op_webgpu_render_pass_set_stencil_reference,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_begin_pipeline_statistics_query",
+ render_pass::op_webgpu_render_pass_begin_pipeline_statistics_query,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_end_pipeline_statistics_query",
+ render_pass::op_webgpu_render_pass_end_pipeline_statistics_query,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_write_timestamp",
+ render_pass::op_webgpu_render_pass_write_timestamp,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_execute_bundles",
+ render_pass::op_webgpu_render_pass_execute_bundles,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_end_pass",
+ render_pass::op_webgpu_render_pass_end_pass,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_bind_group",
+ render_pass::op_webgpu_render_pass_set_bind_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_push_debug_group",
+ render_pass::op_webgpu_render_pass_push_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_pop_debug_group",
+ render_pass::op_webgpu_render_pass_pop_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_insert_debug_marker",
+ render_pass::op_webgpu_render_pass_insert_debug_marker,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_pipeline",
+ render_pass::op_webgpu_render_pass_set_pipeline,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_index_buffer",
+ render_pass::op_webgpu_render_pass_set_index_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_set_vertex_buffer",
+ render_pass::op_webgpu_render_pass_set_vertex_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_draw",
+ render_pass::op_webgpu_render_pass_draw,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_draw_indexed",
+ render_pass::op_webgpu_render_pass_draw_indexed,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_draw_indirect",
+ render_pass::op_webgpu_render_pass_draw_indirect,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_pass_draw_indexed_indirect",
+ render_pass::op_webgpu_render_pass_draw_indexed_indirect,
+ );
+ }
+ {
+ // compute_pass
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_set_pipeline",
+ compute_pass::op_webgpu_compute_pass_set_pipeline,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_dispatch",
+ compute_pass::op_webgpu_compute_pass_dispatch,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_dispatch_indirect",
+ compute_pass::op_webgpu_compute_pass_dispatch_indirect,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_end_pass",
+ compute_pass::op_webgpu_compute_pass_end_pass,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_set_bind_group",
+ compute_pass::op_webgpu_compute_pass_set_bind_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_push_debug_group",
+ compute_pass::op_webgpu_compute_pass_push_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_pop_debug_group",
+ compute_pass::op_webgpu_compute_pass_pop_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_compute_pass_insert_debug_marker",
+ compute_pass::op_webgpu_compute_pass_insert_debug_marker,
+ );
+ }
+ {
+ // bundle
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_render_bundle_encoder",
+ bundle::op_webgpu_create_render_bundle_encoder,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_finish",
+ bundle::op_webgpu_render_bundle_encoder_finish,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_set_bind_group",
+ bundle::op_webgpu_render_bundle_encoder_set_bind_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_push_debug_group",
+ bundle::op_webgpu_render_bundle_encoder_push_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_pop_debug_group",
+ bundle::op_webgpu_render_bundle_encoder_pop_debug_group,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_insert_debug_marker",
+ bundle::op_webgpu_render_bundle_encoder_insert_debug_marker,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_set_pipeline",
+ bundle::op_webgpu_render_bundle_encoder_set_pipeline,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_set_index_buffer",
+ bundle::op_webgpu_render_bundle_encoder_set_index_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_set_vertex_buffer",
+ bundle::op_webgpu_render_bundle_encoder_set_vertex_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_draw",
+ bundle::op_webgpu_render_bundle_encoder_draw,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_draw_indexed",
+ bundle::op_webgpu_render_bundle_encoder_draw_indexed,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_render_bundle_encoder_draw_indirect",
+ bundle::op_webgpu_render_bundle_encoder_draw_indirect,
+ );
+ }
+ {
+ // queue
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_queue_submit",
+ queue::op_webgpu_queue_submit,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_write_buffer",
+ queue::op_webgpu_write_buffer,
+ );
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_write_texture",
+ queue::op_webgpu_write_texture,
+ );
+ }
+ {
+ // shader
+ super::reg_json_sync(
+ rt,
+ "op_webgpu_create_shader_module",
+ shader::op_webgpu_create_shader_module,
+ );
+ }
+}