deno.land / x / deno@v1.28.2 / ext / webgpu / src / shader.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
use deno_core::error::AnyError;use deno_core::op;use deno_core::OpState;use deno_core::Resource;use deno_core::ResourceId;use std::borrow::Cow;
use super::error::WebGpuResult;
pub(crate) struct WebGpuShaderModule(pub(crate) wgpu_core::id::ShaderModuleId);impl Resource for WebGpuShaderModule { fn name(&self) -> Cow<str> { "webGPUShaderModule".into() }}
#[op]pub fn op_webgpu_create_shader_module( state: &mut OpState, device_rid: ResourceId, label: Option<String>, code: String, _source_map: Option<()>, // not yet implemented) -> Result<WebGpuResult, AnyError> { let instance = state.borrow::<super::Instance>(); let device_resource = state .resource_table .get::<super::WebGpuDevice>(device_rid)?; let device = device_resource.0;
let source = wgpu_core::pipeline::ShaderModuleSource::Wgsl(Cow::from(code));
let descriptor = wgpu_core::pipeline::ShaderModuleDescriptor { label: label.map(Cow::from), shader_bound_checks: wgpu_types::ShaderBoundChecks::default(), };
gfx_put!(device => instance.device_create_shader_module( device, &descriptor, source, std::marker::PhantomData ) => state, WebGpuShaderModule)}
deno

Version Info

Tagged at
a year ago