diff options
Diffstat (limited to 'ext/webgpu/src')
-rw-r--r-- | ext/webgpu/src/binding.rs | 4 | ||||
-rw-r--r-- | ext/webgpu/src/buffer.rs | 6 | ||||
-rw-r--r-- | ext/webgpu/src/bundle.rs | 13 | ||||
-rw-r--r-- | ext/webgpu/src/command_encoder.rs | 15 | ||||
-rw-r--r-- | ext/webgpu/src/compute_pass.rs | 12 | ||||
-rw-r--r-- | ext/webgpu/src/lib.rs | 414 | ||||
-rw-r--r-- | ext/webgpu/src/pipeline.rs | 5 | ||||
-rw-r--r-- | ext/webgpu/src/queue.rs | 4 | ||||
-rw-r--r-- | ext/webgpu/src/render_pass.rs | 21 | ||||
-rw-r--r-- | ext/webgpu/src/sampler.rs | 2 | ||||
-rw-r--r-- | ext/webgpu/src/shader.rs | 2 | ||||
-rw-r--r-- | ext/webgpu/src/texture.rs | 3 |
12 files changed, 173 insertions, 328 deletions
diff --git a/ext/webgpu/src/binding.rs b/ext/webgpu/src/binding.rs index 9a8fa455f..7370f8034 100644 --- a/ext/webgpu/src/binding.rs +++ b/ext/webgpu/src/binding.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -177,6 +178,7 @@ pub struct CreateBindGroupLayoutArgs { entries: Vec<GpuBindGroupLayoutEntry>, } +#[op] pub fn op_webgpu_create_bind_group_layout( state: &mut OpState, args: CreateBindGroupLayoutArgs, @@ -220,6 +222,7 @@ pub struct CreatePipelineLayoutArgs { bind_group_layouts: Vec<u32>, } +#[op] pub fn op_webgpu_create_pipeline_layout( state: &mut OpState, args: CreatePipelineLayoutArgs, @@ -271,6 +274,7 @@ pub struct CreateBindGroupArgs { entries: Vec<GpuBindGroupEntry>, } +#[op] pub fn op_webgpu_create_bind_group( state: &mut OpState, args: CreateBindGroupArgs, diff --git a/ext/webgpu/src/buffer.rs b/ext/webgpu/src/buffer.rs index 3f2c07883..ce3a78d01 100644 --- a/ext/webgpu/src/buffer.rs +++ b/ext/webgpu/src/buffer.rs @@ -3,6 +3,8 @@ use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::futures::channel::oneshot; +use deno_core::op; + use deno_core::OpState; use deno_core::Resource; use deno_core::ResourceId; @@ -40,6 +42,7 @@ pub struct CreateBufferArgs { mapped_at_creation: bool, } +#[op] pub fn op_webgpu_create_buffer( state: &mut OpState, args: CreateBufferArgs, @@ -76,6 +79,7 @@ pub struct BufferGetMapAsyncArgs { size: u64, } +#[op] pub async fn op_webgpu_buffer_get_map_async( state: Rc<RefCell<OpState>>, args: BufferGetMapAsyncArgs, @@ -167,6 +171,7 @@ pub struct BufferGetMappedRangeArgs { size: Option<u64>, } +#[op] pub fn op_webgpu_buffer_get_mapped_range( state: &mut OpState, args: BufferGetMappedRangeArgs, @@ -204,6 +209,7 @@ pub struct BufferUnmapArgs { mapped_rid: ResourceId, } +#[op] pub fn op_webgpu_buffer_unmap( state: &mut OpState, args: BufferUnmapArgs, diff --git a/ext/webgpu/src/bundle.rs b/ext/webgpu/src/bundle.rs index ea327651a..4a0807302 100644 --- a/ext/webgpu/src/bundle.rs +++ b/ext/webgpu/src/bundle.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::ZeroCopyBuf; use deno_core::{OpState, Resource}; @@ -39,6 +40,7 @@ pub struct CreateRenderBundleEncoderArgs { stencil_read_only: bool, } +#[op] pub fn op_webgpu_create_render_bundle_encoder( state: &mut OpState, args: CreateRenderBundleEncoderArgs, @@ -99,6 +101,7 @@ pub struct RenderBundleEncoderFinishArgs { label: Option<String>, } +#[op] pub fn op_webgpu_render_bundle_encoder_finish( state: &mut OpState, args: RenderBundleEncoderFinishArgs, @@ -135,6 +138,7 @@ pub struct RenderBundleEncoderSetBindGroupArgs { dynamic_offsets_data_length: usize, } +#[op] pub fn op_webgpu_render_bundle_encoder_set_bind_group( state: &mut OpState, args: RenderBundleEncoderSetBindGroupArgs, @@ -189,6 +193,7 @@ pub struct RenderBundleEncoderPushDebugGroupArgs { group_label: String, } +#[op] pub fn op_webgpu_render_bundle_encoder_push_debug_group( state: &mut OpState, args: RenderBundleEncoderPushDebugGroupArgs, @@ -218,6 +223,7 @@ pub struct RenderBundleEncoderPopDebugGroupArgs { render_bundle_encoder_rid: ResourceId, } +#[op] pub fn op_webgpu_render_bundle_encoder_pop_debug_group( state: &mut OpState, args: RenderBundleEncoderPopDebugGroupArgs, @@ -242,6 +248,7 @@ pub struct RenderBundleEncoderInsertDebugMarkerArgs { marker_label: String, } +#[op] pub fn op_webgpu_render_bundle_encoder_insert_debug_marker( state: &mut OpState, args: RenderBundleEncoderInsertDebugMarkerArgs, @@ -272,6 +279,7 @@ pub struct RenderBundleEncoderSetPipelineArgs { pipeline: ResourceId, } +#[op] pub fn op_webgpu_render_bundle_encoder_set_pipeline( state: &mut OpState, args: RenderBundleEncoderSetPipelineArgs, @@ -304,6 +312,7 @@ pub struct RenderBundleEncoderSetIndexBufferArgs { size: u64, } +#[op] pub fn op_webgpu_render_bundle_encoder_set_index_buffer( state: &mut OpState, args: RenderBundleEncoderSetIndexBufferArgs, @@ -340,6 +349,7 @@ pub struct RenderBundleEncoderSetVertexBufferArgs { size: u64, } +#[op] pub fn op_webgpu_render_bundle_encoder_set_vertex_buffer( state: &mut OpState, args: RenderBundleEncoderSetVertexBufferArgs, @@ -374,6 +384,7 @@ pub struct RenderBundleEncoderDrawArgs { first_instance: u32, } +#[op] pub fn op_webgpu_render_bundle_encoder_draw( state: &mut OpState, args: RenderBundleEncoderDrawArgs, @@ -406,6 +417,7 @@ pub struct RenderBundleEncoderDrawIndexedArgs { first_instance: u32, } +#[op] pub fn op_webgpu_render_bundle_encoder_draw_indexed( state: &mut OpState, args: RenderBundleEncoderDrawIndexedArgs, @@ -436,6 +448,7 @@ pub struct RenderBundleEncoderDrawIndirectArgs { indirect_offset: u64, } +#[op] pub fn op_webgpu_render_bundle_encoder_draw_indirect( state: &mut OpState, args: RenderBundleEncoderDrawIndirectArgs, diff --git a/ext/webgpu/src/command_encoder.rs b/ext/webgpu/src/command_encoder.rs index 894b08f27..c81b2abf6 100644 --- a/ext/webgpu/src/command_encoder.rs +++ b/ext/webgpu/src/command_encoder.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -36,6 +37,7 @@ pub struct CreateCommandEncoderArgs { _measure_execution_time: Option<bool>, // not yet implemented } +#[op] pub fn op_webgpu_create_command_encoder( state: &mut OpState, args: CreateCommandEncoderArgs, @@ -96,6 +98,7 @@ pub struct CommandEncoderBeginRenderPassArgs { _occlusion_query_set: Option<u32>, // not yet implemented } +#[op] pub fn op_webgpu_command_encoder_begin_render_pass( state: &mut OpState, args: CommandEncoderBeginRenderPassArgs, @@ -214,6 +217,7 @@ pub struct CommandEncoderBeginComputePassArgs { label: Option<String>, } +#[op] pub fn op_webgpu_command_encoder_begin_compute_pass( state: &mut OpState, args: CommandEncoderBeginComputePassArgs, @@ -252,6 +256,7 @@ pub struct CommandEncoderCopyBufferToBufferArgs { size: u64, } +#[op] pub fn op_webgpu_command_encoder_copy_buffer_to_buffer( state: &mut OpState, args: CommandEncoderCopyBufferToBufferArgs, @@ -310,6 +315,7 @@ pub struct CommandEncoderCopyBufferToTextureArgs { copy_size: wgpu_types::Extent3d, } +#[op] pub fn op_webgpu_command_encoder_copy_buffer_to_texture( state: &mut OpState, args: CommandEncoderCopyBufferToTextureArgs, @@ -360,6 +366,7 @@ pub struct CommandEncoderCopyTextureToBufferArgs { copy_size: wgpu_types::Extent3d, } +#[op] pub fn op_webgpu_command_encoder_copy_texture_to_buffer( state: &mut OpState, args: CommandEncoderCopyTextureToBufferArgs, @@ -414,6 +421,7 @@ pub struct CommandEncoderCopyTextureToTextureArgs { copy_size: wgpu_types::Extent3d, } +#[op] pub fn op_webgpu_command_encoder_copy_texture_to_texture( state: &mut OpState, args: CommandEncoderCopyTextureToTextureArgs, @@ -462,6 +470,7 @@ pub struct CommandEncoderClearBufferArgs { size: u64, } +#[op] pub fn op_webgpu_command_encoder_clear_buffer( state: &mut OpState, args: CommandEncoderClearBufferArgs, @@ -491,6 +500,7 @@ pub struct CommandEncoderPushDebugGroupArgs { group_label: String, } +#[op] pub fn op_webgpu_command_encoder_push_debug_group( state: &mut OpState, args: CommandEncoderPushDebugGroupArgs, @@ -512,6 +522,7 @@ pub struct CommandEncoderPopDebugGroupArgs { command_encoder_rid: ResourceId, } +#[op] pub fn op_webgpu_command_encoder_pop_debug_group( state: &mut OpState, args: CommandEncoderPopDebugGroupArgs, @@ -533,6 +544,7 @@ pub struct CommandEncoderInsertDebugMarkerArgs { marker_label: String, } +#[op] pub fn op_webgpu_command_encoder_insert_debug_marker( state: &mut OpState, args: CommandEncoderInsertDebugMarkerArgs, @@ -558,6 +570,7 @@ pub struct CommandEncoderWriteTimestampArgs { query_index: u32, } +#[op] pub fn op_webgpu_command_encoder_write_timestamp( state: &mut OpState, args: CommandEncoderWriteTimestampArgs, @@ -590,6 +603,7 @@ pub struct CommandEncoderResolveQuerySetArgs { destination_offset: u64, } +#[op] pub fn op_webgpu_command_encoder_resolve_query_set( state: &mut OpState, args: CommandEncoderResolveQuerySetArgs, @@ -624,6 +638,7 @@ pub struct CommandEncoderFinishArgs { label: Option<String>, } +#[op] pub fn op_webgpu_command_encoder_finish( state: &mut OpState, args: CommandEncoderFinishArgs, diff --git a/ext/webgpu/src/compute_pass.rs b/ext/webgpu/src/compute_pass.rs index 03d9163cb..e6ebdc098 100644 --- a/ext/webgpu/src/compute_pass.rs +++ b/ext/webgpu/src/compute_pass.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::ZeroCopyBuf; use deno_core::{OpState, Resource}; @@ -26,6 +27,7 @@ pub struct ComputePassSetPipelineArgs { pipeline: ResourceId, } +#[op] pub fn op_webgpu_compute_pass_set_pipeline( state: &mut OpState, args: ComputePassSetPipelineArgs, @@ -56,6 +58,7 @@ pub struct ComputePassDispatchArgs { z: u32, } +#[op] pub fn op_webgpu_compute_pass_dispatch( state: &mut OpState, args: ComputePassDispatchArgs, @@ -83,6 +86,7 @@ pub struct ComputePassDispatchIndirectArgs { indirect_offset: u64, } +#[op] pub fn op_webgpu_compute_pass_dispatch_indirect( state: &mut OpState, args: ComputePassDispatchIndirectArgs, @@ -112,6 +116,7 @@ pub struct ComputePassBeginPipelineStatisticsQueryArgs { query_index: u32, } +#[op] pub fn op_webgpu_compute_pass_begin_pipeline_statistics_query( state: &mut OpState, args: ComputePassBeginPipelineStatisticsQueryArgs, @@ -139,6 +144,7 @@ pub struct ComputePassEndPipelineStatisticsQueryArgs { compute_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_compute_pass_end_pipeline_statistics_query( state: &mut OpState, args: ComputePassEndPipelineStatisticsQueryArgs, @@ -163,6 +169,7 @@ pub struct ComputePassWriteTimestampArgs { query_index: u32, } +#[op] pub fn op_webgpu_compute_pass_write_timestamp( state: &mut OpState, args: ComputePassWriteTimestampArgs, @@ -191,6 +198,7 @@ pub struct ComputePassEndPassArgs { compute_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_compute_pass_end_pass( state: &mut OpState, args: ComputePassEndPassArgs, @@ -225,6 +233,7 @@ pub struct ComputePassSetBindGroupArgs { dynamic_offsets_data_length: usize, } +#[op] pub fn op_webgpu_compute_pass_set_bind_group( state: &mut OpState, args: ComputePassSetBindGroupArgs, @@ -278,6 +287,7 @@ pub struct ComputePassPushDebugGroupArgs { group_label: String, } +#[op] pub fn op_webgpu_compute_pass_push_debug_group( state: &mut OpState, args: ComputePassPushDebugGroupArgs, @@ -307,6 +317,7 @@ pub struct ComputePassPopDebugGroupArgs { compute_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_compute_pass_pop_debug_group( state: &mut OpState, args: ComputePassPopDebugGroupArgs, @@ -330,6 +341,7 @@ pub struct ComputePassInsertDebugMarkerArgs { marker_label: String, } +#[op] pub fn op_webgpu_compute_pass_insert_debug_marker( state: &mut OpState, args: ComputePassInsertDebugMarkerArgs, diff --git a/ext/webgpu/src/lib.rs b/ext/webgpu/src/lib.rs index 9d227a51e..d1eba20ba 100644 --- a/ext/webgpu/src/lib.rs +++ b/ext/webgpu/src/lib.rs @@ -2,10 +2,10 @@ use deno_core::error::AnyError; use deno_core::include_js_files; -use deno_core::op_async; -use deno_core::op_sync; +use deno_core::op; + use deno_core::Extension; -use deno_core::OpFn; +use deno_core::OpPair; use deno_core::OpState; use deno_core::Resource; use deno_core::ResourceId; @@ -241,6 +241,7 @@ pub struct GpuAdapterDevice { is_software: bool, } +#[op] pub async fn op_webgpu_request_adapter( state: Rc<RefCell<OpState>>, args: RequestAdapterArgs, @@ -439,6 +440,7 @@ impl From<GpuRequiredFeatures> for wgpu_types::Features { } } +#[op] pub async fn op_webgpu_request_device( state: Rc<RefCell<OpState>>, args: RequestDeviceArgs, @@ -539,6 +541,7 @@ impl From<GpuQueryType> for wgpu_types::QueryType { } } +#[op] pub fn op_webgpu_create_query_set( state: &mut OpState, args: CreateQuerySetArgs, @@ -562,347 +565,102 @@ pub fn op_webgpu_create_query_set( ) => state, WebGpuQuerySet) } -fn declare_webgpu_ops() -> Vec<(&'static str, Box<OpFn>)> { +fn declare_webgpu_ops() -> Vec<OpPair> { vec![ // Request device/adapter - ( - "op_webgpu_request_adapter", - op_async(op_webgpu_request_adapter), - ), - ( - "op_webgpu_request_device", - op_async(op_webgpu_request_device), - ), + op_webgpu_request_adapter::decl(), + op_webgpu_request_device::decl(), // Query Set - ( - "op_webgpu_create_query_set", - op_sync(op_webgpu_create_query_set), - ), + op_webgpu_create_query_set::decl(), // buffer - ( - "op_webgpu_create_buffer", - op_sync(buffer::op_webgpu_create_buffer), - ), - ( - "op_webgpu_buffer_get_mapped_range", - op_sync(buffer::op_webgpu_buffer_get_mapped_range), - ), - ( - "op_webgpu_buffer_unmap", - op_sync(buffer::op_webgpu_buffer_unmap), - ), + buffer::op_webgpu_create_buffer::decl(), + buffer::op_webgpu_buffer_get_mapped_range::decl(), + buffer::op_webgpu_buffer_unmap::decl(), // buffer async - ( - "op_webgpu_buffer_get_map_async", - op_async(buffer::op_webgpu_buffer_get_map_async), - ), + buffer::op_webgpu_buffer_get_map_async::decl(), // remaining sync ops // texture - ( - "op_webgpu_create_texture", - op_sync(texture::op_webgpu_create_texture), - ), - ( - "op_webgpu_create_texture_view", - op_sync(texture::op_webgpu_create_texture_view), - ), + texture::op_webgpu_create_texture::decl(), + texture::op_webgpu_create_texture_view::decl(), // sampler - ( - "op_webgpu_create_sampler", - op_sync(sampler::op_webgpu_create_sampler), - ), + sampler::op_webgpu_create_sampler::decl(), // binding - ( - "op_webgpu_create_bind_group_layout", - op_sync(binding::op_webgpu_create_bind_group_layout), - ), - ( - "op_webgpu_create_pipeline_layout", - op_sync(binding::op_webgpu_create_pipeline_layout), - ), - ( - "op_webgpu_create_bind_group", - op_sync(binding::op_webgpu_create_bind_group), - ), + binding::op_webgpu_create_bind_group_layout::decl(), + binding::op_webgpu_create_pipeline_layout::decl(), + binding::op_webgpu_create_bind_group::decl(), // pipeline - ( - "op_webgpu_create_compute_pipeline", - op_sync(pipeline::op_webgpu_create_compute_pipeline), - ), - ( - "op_webgpu_compute_pipeline_get_bind_group_layout", - op_sync(pipeline::op_webgpu_compute_pipeline_get_bind_group_layout), - ), - ( - "op_webgpu_create_render_pipeline", - op_sync(pipeline::op_webgpu_create_render_pipeline), - ), - ( - "op_webgpu_render_pipeline_get_bind_group_layout", - op_sync(pipeline::op_webgpu_render_pipeline_get_bind_group_layout), - ), + pipeline::op_webgpu_create_compute_pipeline::decl(), + pipeline::op_webgpu_compute_pipeline_get_bind_group_layout::decl(), + pipeline::op_webgpu_create_render_pipeline::decl(), + pipeline::op_webgpu_render_pipeline_get_bind_group_layout::decl(), // command_encoder - ( - "op_webgpu_create_command_encoder", - op_sync(command_encoder::op_webgpu_create_command_encoder), - ), - ( - "op_webgpu_command_encoder_begin_render_pass", - op_sync(command_encoder::op_webgpu_command_encoder_begin_render_pass), - ), - ( - "op_webgpu_command_encoder_begin_compute_pass", - op_sync(command_encoder::op_webgpu_command_encoder_begin_compute_pass), - ), - ( - "op_webgpu_command_encoder_copy_buffer_to_buffer", - op_sync(command_encoder::op_webgpu_command_encoder_copy_buffer_to_buffer), - ), - ( - "op_webgpu_command_encoder_copy_buffer_to_texture", - op_sync( - command_encoder::op_webgpu_command_encoder_copy_buffer_to_texture, - ), - ), - ( - "op_webgpu_command_encoder_copy_texture_to_buffer", - op_sync( - command_encoder::op_webgpu_command_encoder_copy_texture_to_buffer, - ), - ), - ( - "op_webgpu_command_encoder_copy_texture_to_texture", - op_sync( - command_encoder::op_webgpu_command_encoder_copy_texture_to_texture, - ), - ), - ( - "op_webgpu_command_encoder_clear_buffer", - op_sync(command_encoder::op_webgpu_command_encoder_clear_buffer), - ), - ( - "op_webgpu_command_encoder_push_debug_group", - op_sync(command_encoder::op_webgpu_command_encoder_push_debug_group), - ), - ( - "op_webgpu_command_encoder_pop_debug_group", - op_sync(command_encoder::op_webgpu_command_encoder_pop_debug_group), - ), - ( - "op_webgpu_command_encoder_insert_debug_marker", - op_sync(command_encoder::op_webgpu_command_encoder_insert_debug_marker), - ), - ( - "op_webgpu_command_encoder_write_timestamp", - op_sync(command_encoder::op_webgpu_command_encoder_write_timestamp), - ), - ( - "op_webgpu_command_encoder_resolve_query_set", - op_sync(command_encoder::op_webgpu_command_encoder_resolve_query_set), - ), - ( - "op_webgpu_command_encoder_finish", - op_sync(command_encoder::op_webgpu_command_encoder_finish), - ), + command_encoder::op_webgpu_create_command_encoder::decl(), + command_encoder::op_webgpu_command_encoder_begin_render_pass::decl(), + command_encoder::op_webgpu_command_encoder_begin_compute_pass::decl(), + command_encoder::op_webgpu_command_encoder_copy_buffer_to_buffer::decl(), + command_encoder::op_webgpu_command_encoder_copy_buffer_to_texture::decl(), + command_encoder::op_webgpu_command_encoder_copy_texture_to_buffer::decl(), + command_encoder::op_webgpu_command_encoder_copy_texture_to_texture::decl(), + command_encoder::op_webgpu_command_encoder_clear_buffer::decl(), + command_encoder::op_webgpu_command_encoder_push_debug_group::decl(), + command_encoder::op_webgpu_command_encoder_pop_debug_group::decl(), + command_encoder::op_webgpu_command_encoder_insert_debug_marker::decl(), + command_encoder::op_webgpu_command_encoder_write_timestamp::decl(), + command_encoder::op_webgpu_command_encoder_resolve_query_set::decl(), + command_encoder::op_webgpu_command_encoder_finish::decl(), // render_pass - ( - "op_webgpu_render_pass_set_viewport", - op_sync(render_pass::op_webgpu_render_pass_set_viewport), - ), - ( - "op_webgpu_render_pass_set_scissor_rect", - op_sync(render_pass::op_webgpu_render_pass_set_scissor_rect), - ), - ( - "op_webgpu_render_pass_set_blend_constant", - op_sync(render_pass::op_webgpu_render_pass_set_blend_constant), - ), - ( - "op_webgpu_render_pass_set_stencil_reference", - op_sync(render_pass::op_webgpu_render_pass_set_stencil_reference), - ), - ( - "op_webgpu_render_pass_begin_pipeline_statistics_query", - op_sync( - render_pass::op_webgpu_render_pass_begin_pipeline_statistics_query, - ), - ), - ( - "op_webgpu_render_pass_end_pipeline_statistics_query", - op_sync(render_pass::op_webgpu_render_pass_end_pipeline_statistics_query), - ), - ( - "op_webgpu_render_pass_write_timestamp", - op_sync(render_pass::op_webgpu_render_pass_write_timestamp), - ), - ( - "op_webgpu_render_pass_execute_bundles", - op_sync(render_pass::op_webgpu_render_pass_execute_bundles), - ), - ( - "op_webgpu_render_pass_end_pass", - op_sync(render_pass::op_webgpu_render_pass_end_pass), - ), - ( - "op_webgpu_render_pass_set_bind_group", - op_sync(render_pass::op_webgpu_render_pass_set_bind_group), - ), - ( - "op_webgpu_render_pass_push_debug_group", - op_sync(render_pass::op_webgpu_render_pass_push_debug_group), - ), - ( - "op_webgpu_render_pass_pop_debug_group", - op_sync(render_pass::op_webgpu_render_pass_pop_debug_group), - ), - ( - "op_webgpu_render_pass_insert_debug_marker", - op_sync(render_pass::op_webgpu_render_pass_insert_debug_marker), - ), - ( - "op_webgpu_render_pass_set_pipeline", - op_sync(render_pass::op_webgpu_render_pass_set_pipeline), - ), - ( - "op_webgpu_render_pass_set_index_buffer", - op_sync(render_pass::op_webgpu_render_pass_set_index_buffer), - ), - ( - "op_webgpu_render_pass_set_vertex_buffer", - op_sync(render_pass::op_webgpu_render_pass_set_vertex_buffer), - ), - ( - "op_webgpu_render_pass_draw", - op_sync(render_pass::op_webgpu_render_pass_draw), - ), - ( - "op_webgpu_render_pass_draw_indexed", - op_sync(render_pass::op_webgpu_render_pass_draw_indexed), - ), - ( - "op_webgpu_render_pass_draw_indirect", - op_sync(render_pass::op_webgpu_render_pass_draw_indirect), - ), - ( - "op_webgpu_render_pass_draw_indexed_indirect", - op_sync(render_pass::op_webgpu_render_pass_draw_indexed_indirect), - ), + render_pass::op_webgpu_render_pass_set_viewport::decl(), + render_pass::op_webgpu_render_pass_set_scissor_rect::decl(), + render_pass::op_webgpu_render_pass_set_blend_constant::decl(), + render_pass::op_webgpu_render_pass_set_stencil_reference::decl(), + render_pass::op_webgpu_render_pass_begin_pipeline_statistics_query::decl(), + render_pass::op_webgpu_render_pass_end_pipeline_statistics_query::decl(), + render_pass::op_webgpu_render_pass_write_timestamp::decl(), + render_pass::op_webgpu_render_pass_execute_bundles::decl(), + render_pass::op_webgpu_render_pass_end_pass::decl(), + render_pass::op_webgpu_render_pass_set_bind_group::decl(), + render_pass::op_webgpu_render_pass_push_debug_group::decl(), + render_pass::op_webgpu_render_pass_pop_debug_group::decl(), + render_pass::op_webgpu_render_pass_insert_debug_marker::decl(), + render_pass::op_webgpu_render_pass_set_pipeline::decl(), + render_pass::op_webgpu_render_pass_set_index_buffer::decl(), + render_pass::op_webgpu_render_pass_set_vertex_buffer::decl(), + render_pass::op_webgpu_render_pass_draw::decl(), + render_pass::op_webgpu_render_pass_draw_indexed::decl(), + render_pass::op_webgpu_render_pass_draw_indirect::decl(), + render_pass::op_webgpu_render_pass_draw_indexed_indirect::decl(), // compute_pass - ( - "op_webgpu_compute_pass_set_pipeline", - op_sync(compute_pass::op_webgpu_compute_pass_set_pipeline), - ), - ( - "op_webgpu_compute_pass_dispatch", - op_sync(compute_pass::op_webgpu_compute_pass_dispatch), - ), - ( - "op_webgpu_compute_pass_dispatch_indirect", - op_sync(compute_pass::op_webgpu_compute_pass_dispatch_indirect), - ), - ( - "op_webgpu_compute_pass_begin_pipeline_statistics_query", - op_sync( - compute_pass::op_webgpu_compute_pass_begin_pipeline_statistics_query, - ), - ), - ( - "op_webgpu_compute_pass_end_pipeline_statistics_query", - op_sync( - compute_pass::op_webgpu_compute_pass_end_pipeline_statistics_query, - ), - ), - ( - "op_webgpu_compute_pass_write_timestamp", - op_sync(compute_pass::op_webgpu_compute_pass_write_timestamp), - ), - ( - "op_webgpu_compute_pass_end_pass", - op_sync(compute_pass::op_webgpu_compute_pass_end_pass), - ), - ( - "op_webgpu_compute_pass_set_bind_group", - op_sync(compute_pass::op_webgpu_compute_pass_set_bind_group), - ), - ( - "op_webgpu_compute_pass_push_debug_group", - op_sync(compute_pass::op_webgpu_compute_pass_push_debug_group), - ), - ( - "op_webgpu_compute_pass_pop_debug_group", - op_sync(compute_pass::op_webgpu_compute_pass_pop_debug_group), - ), - ( - "op_webgpu_compute_pass_insert_debug_marker", - op_sync(compute_pass::op_webgpu_compute_pass_insert_debug_marker), - ), + compute_pass::op_webgpu_compute_pass_set_pipeline::decl(), + compute_pass::op_webgpu_compute_pass_dispatch::decl(), + compute_pass::op_webgpu_compute_pass_dispatch_indirect::decl(), + compute_pass::op_webgpu_compute_pass_begin_pipeline_statistics_query::decl( + ), + compute_pass::op_webgpu_compute_pass_end_pipeline_statistics_query::decl(), + compute_pass::op_webgpu_compute_pass_write_timestamp::decl(), + compute_pass::op_webgpu_compute_pass_end_pass::decl(), + compute_pass::op_webgpu_compute_pass_set_bind_group::decl(), + compute_pass::op_webgpu_compute_pass_push_debug_group::decl(), + compute_pass::op_webgpu_compute_pass_pop_debug_group::decl(), + compute_pass::op_webgpu_compute_pass_insert_debug_marker::decl(), // bundle - ( - "op_webgpu_create_render_bundle_encoder", - op_sync(bundle::op_webgpu_create_render_bundle_encoder), - ), - ( - "op_webgpu_render_bundle_encoder_finish", - op_sync(bundle::op_webgpu_render_bundle_encoder_finish), - ), - ( - "op_webgpu_render_bundle_encoder_set_bind_group", - op_sync(bundle::op_webgpu_render_bundle_encoder_set_bind_group), - ), - ( - "op_webgpu_render_bundle_encoder_push_debug_group", - op_sync(bundle::op_webgpu_render_bundle_encoder_push_debug_group), - ), - ( - "op_webgpu_render_bundle_encoder_pop_debug_group", - op_sync(bundle::op_webgpu_render_bundle_encoder_pop_debug_group), - ), - ( - "op_webgpu_render_bundle_encoder_insert_debug_marker", - op_sync(bundle::op_webgpu_render_bundle_encoder_insert_debug_marker), - ), - ( - "op_webgpu_render_bundle_encoder_set_pipeline", - op_sync(bundle::op_webgpu_render_bundle_encoder_set_pipeline), - ), - ( - "op_webgpu_render_bundle_encoder_set_index_buffer", - op_sync(bundle::op_webgpu_render_bundle_encoder_set_index_buffer), - ), - ( - "op_webgpu_render_bundle_encoder_set_vertex_buffer", - op_sync(bundle::op_webgpu_render_bundle_encoder_set_vertex_buffer), - ), - ( - "op_webgpu_render_bundle_encoder_draw", - op_sync(bundle::op_webgpu_render_bundle_encoder_draw), - ), - ( - "op_webgpu_render_bundle_encoder_draw_indexed", - op_sync(bundle::op_webgpu_render_bundle_encoder_draw_indexed), - ), - ( - "op_webgpu_render_bundle_encoder_draw_indirect", - op_sync(bundle::op_webgpu_render_bundle_encoder_draw_indirect), - ), + bundle::op_webgpu_create_render_bundle_encoder::decl(), + bundle::op_webgpu_render_bundle_encoder_finish::decl(), + bundle::op_webgpu_render_bundle_encoder_set_bind_group::decl(), + bundle::op_webgpu_render_bundle_encoder_push_debug_group::decl(), + bundle::op_webgpu_render_bundle_encoder_pop_debug_group::decl(), + bundle::op_webgpu_render_bundle_encoder_insert_debug_marker::decl(), + bundle::op_webgpu_render_bundle_encoder_set_pipeline::decl(), + bundle::op_webgpu_render_bundle_encoder_set_index_buffer::decl(), + bundle::op_webgpu_render_bundle_encoder_set_vertex_buffer::decl(), + bundle::op_webgpu_render_bundle_encoder_draw::decl(), + bundle::op_webgpu_render_bundle_encoder_draw_indexed::decl(), + bundle::op_webgpu_render_bundle_encoder_draw_indirect::decl(), // queue - ( - "op_webgpu_queue_submit", - op_sync(queue::op_webgpu_queue_submit), - ), - ( - "op_webgpu_write_buffer", - op_sync(queue::op_webgpu_write_buffer), - ), - ( - "op_webgpu_write_texture", - op_sync(queue::op_webgpu_write_texture), - ), + queue::op_webgpu_queue_submit::decl(), + queue::op_webgpu_write_buffer::decl(), + queue::op_webgpu_write_texture::decl(), // shader - ( - "op_webgpu_create_shader_module", - op_sync(shader::op_webgpu_create_shader_module), - ), + shader::op_webgpu_create_shader_module::decl(), ] } diff --git a/ext/webgpu/src/pipeline.rs b/ext/webgpu/src/pipeline.rs index 8327fb946..6ea2a5677 100644 --- a/ext/webgpu/src/pipeline.rs +++ b/ext/webgpu/src/pipeline.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -57,6 +58,7 @@ pub struct CreateComputePipelineArgs { compute: GpuProgrammableStage, } +#[op] pub fn op_webgpu_create_compute_pipeline( state: &mut OpState, args: CreateComputePipelineArgs, @@ -126,6 +128,7 @@ pub struct PipelineLayout { err: Option<WebGpuError>, } +#[op] pub fn op_webgpu_compute_pipeline_get_bind_group_layout( state: &mut OpState, args: ComputePipelineGetBindGroupLayoutArgs, @@ -303,6 +306,7 @@ pub struct CreateRenderPipelineArgs { fragment: Option<GpuFragmentState>, } +#[op] pub fn op_webgpu_create_render_pipeline( state: &mut OpState, args: CreateRenderPipelineArgs, @@ -404,6 +408,7 @@ pub struct RenderPipelineGetBindGroupLayoutArgs { index: u32, } +#[op] pub fn op_webgpu_render_pipeline_get_bind_group_layout( state: &mut OpState, args: RenderPipelineGetBindGroupLayoutArgs, diff --git a/ext/webgpu/src/queue.rs b/ext/webgpu/src/queue.rs index a662c4ead..3853f0025 100644 --- a/ext/webgpu/src/queue.rs +++ b/ext/webgpu/src/queue.rs @@ -3,6 +3,7 @@ use std::num::NonZeroU32; use deno_core::error::AnyError; +use deno_core::op; use deno_core::OpState; use deno_core::ResourceId; use deno_core::ZeroCopyBuf; @@ -19,6 +20,7 @@ pub struct QueueSubmitArgs { command_buffers: Vec<ResourceId>, } +#[op] pub fn op_webgpu_queue_submit( state: &mut OpState, args: QueueSubmitArgs, @@ -73,6 +75,7 @@ pub struct QueueWriteBufferArgs { size: Option<usize>, } +#[op] pub fn op_webgpu_write_buffer( state: &mut OpState, args: QueueWriteBufferArgs, @@ -111,6 +114,7 @@ pub struct QueueWriteTextureArgs { size: wgpu_types::Extent3d, } +#[op] pub fn op_webgpu_write_texture( state: &mut OpState, args: QueueWriteTextureArgs, diff --git a/ext/webgpu/src/render_pass.rs b/ext/webgpu/src/render_pass.rs index 469bf727e..822b4c8c9 100644 --- a/ext/webgpu/src/render_pass.rs +++ b/ext/webgpu/src/render_pass.rs @@ -2,6 +2,7 @@ use deno_core::error::type_error; use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::ZeroCopyBuf; use deno_core::{OpState, Resource}; @@ -32,6 +33,7 @@ pub struct RenderPassSetViewportArgs { max_depth: f32, } +#[op] pub fn op_webgpu_render_pass_set_viewport( state: &mut OpState, args: RenderPassSetViewportArgs, @@ -64,6 +66,7 @@ pub struct RenderPassSetScissorRectArgs { height: u32, } +#[op] pub fn op_webgpu_render_pass_set_scissor_rect( state: &mut OpState, args: RenderPassSetScissorRectArgs, @@ -91,6 +94,7 @@ pub struct RenderPassSetBlendConstantArgs { color: wgpu_types::Color, } +#[op] pub fn op_webgpu_render_pass_set_blend_constant( state: &mut OpState, args: RenderPassSetBlendConstantArgs, @@ -115,6 +119,7 @@ pub struct RenderPassSetStencilReferenceArgs { reference: u32, } +#[op] pub fn op_webgpu_render_pass_set_stencil_reference( state: &mut OpState, args: RenderPassSetStencilReferenceArgs, @@ -140,6 +145,7 @@ pub struct RenderPassBeginPipelineStatisticsQueryArgs { query_index: u32, } +#[op] pub fn op_webgpu_render_pass_begin_pipeline_statistics_query( state: &mut OpState, args: RenderPassBeginPipelineStatisticsQueryArgs, @@ -167,6 +173,7 @@ pub struct RenderPassEndPipelineStatisticsQueryArgs { render_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_render_pass_end_pipeline_statistics_query( state: &mut OpState, args: RenderPassEndPipelineStatisticsQueryArgs, @@ -191,6 +198,7 @@ pub struct RenderPassWriteTimestampArgs { query_index: u32, } +#[op] pub fn op_webgpu_render_pass_write_timestamp( state: &mut OpState, args: RenderPassWriteTimestampArgs, @@ -219,6 +227,7 @@ pub struct RenderPassExecuteBundlesArgs { bundles: Vec<u32>, } +#[op] pub fn op_webgpu_render_pass_execute_bundles( state: &mut OpState, args: RenderPassExecuteBundlesArgs, @@ -258,6 +267,7 @@ pub struct RenderPassEndPassArgs { render_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_render_pass_end_pass( state: &mut OpState, args: RenderPassEndPassArgs, @@ -289,6 +299,7 @@ pub struct RenderPassSetBindGroupArgs { dynamic_offsets_data_length: usize, } +#[op] pub fn op_webgpu_render_pass_set_bind_group( state: &mut OpState, args: RenderPassSetBindGroupArgs, @@ -342,6 +353,7 @@ pub struct RenderPassPushDebugGroupArgs { group_label: String, } +#[op] pub fn op_webgpu_render_pass_push_debug_group( state: &mut OpState, args: RenderPassPushDebugGroupArgs, @@ -371,6 +383,7 @@ pub struct RenderPassPopDebugGroupArgs { render_pass_rid: ResourceId, } +#[op] pub fn op_webgpu_render_pass_pop_debug_group( state: &mut OpState, args: RenderPassPopDebugGroupArgs, @@ -394,6 +407,7 @@ pub struct RenderPassInsertDebugMarkerArgs { marker_label: String, } +#[op] pub fn op_webgpu_render_pass_insert_debug_marker( state: &mut OpState, args: RenderPassInsertDebugMarkerArgs, @@ -424,6 +438,7 @@ pub struct RenderPassSetPipelineArgs { pipeline: u32, } +#[op] pub fn op_webgpu_render_pass_set_pipeline( state: &mut OpState, args: RenderPassSetPipelineArgs, @@ -455,6 +470,7 @@ pub struct RenderPassSetIndexBufferArgs { size: Option<u64>, } +#[op] pub fn op_webgpu_render_pass_set_index_buffer( state: &mut OpState, args: RenderPassSetIndexBufferArgs, @@ -496,6 +512,7 @@ pub struct RenderPassSetVertexBufferArgs { size: Option<u64>, } +#[op] pub fn op_webgpu_render_pass_set_vertex_buffer( state: &mut OpState, args: RenderPassSetVertexBufferArgs, @@ -538,6 +555,7 @@ pub struct RenderPassDrawArgs { first_instance: u32, } +#[op] pub fn op_webgpu_render_pass_draw( state: &mut OpState, args: RenderPassDrawArgs, @@ -569,6 +587,7 @@ pub struct RenderPassDrawIndexedArgs { first_instance: u32, } +#[op] pub fn op_webgpu_render_pass_draw_indexed( state: &mut OpState, args: RenderPassDrawIndexedArgs, @@ -598,6 +617,7 @@ pub struct RenderPassDrawIndirectArgs { indirect_offset: u64, } +#[op] pub fn op_webgpu_render_pass_draw_indirect( state: &mut OpState, args: RenderPassDrawIndirectArgs, @@ -627,6 +647,7 @@ pub struct RenderPassDrawIndexedIndirectArgs { indirect_offset: u64, } +#[op] pub fn op_webgpu_render_pass_draw_indexed_indirect( state: &mut OpState, args: RenderPassDrawIndexedIndirectArgs, diff --git a/ext/webgpu/src/sampler.rs b/ext/webgpu/src/sampler.rs index c1cb0b411..3c0c43f53 100644 --- a/ext/webgpu/src/sampler.rs +++ b/ext/webgpu/src/sampler.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -32,6 +33,7 @@ pub struct CreateSamplerArgs { max_anisotropy: u8, } +#[op] pub fn op_webgpu_create_sampler( state: &mut OpState, args: CreateSamplerArgs, diff --git a/ext/webgpu/src/shader.rs b/ext/webgpu/src/shader.rs index 60290de8b..0173fffa2 100644 --- a/ext/webgpu/src/shader.rs +++ b/ext/webgpu/src/shader.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -24,6 +25,7 @@ pub struct CreateShaderModuleArgs { _source_map: Option<()>, // not yet implemented } +#[op] pub fn op_webgpu_create_shader_module( state: &mut OpState, args: CreateShaderModuleArgs, diff --git a/ext/webgpu/src/texture.rs b/ext/webgpu/src/texture.rs index 30d440e5c..482437478 100644 --- a/ext/webgpu/src/texture.rs +++ b/ext/webgpu/src/texture.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::ResourceId; use deno_core::{OpState, Resource}; use serde::Deserialize; @@ -34,6 +35,7 @@ pub struct CreateTextureArgs { usage: u32, } +#[op] pub fn op_webgpu_create_texture( state: &mut OpState, args: CreateTextureArgs, @@ -76,6 +78,7 @@ pub struct CreateTextureViewArgs { array_layer_count: Option<u32>, } +#[op] pub fn op_webgpu_create_texture_view( state: &mut OpState, args: CreateTextureViewArgs, |