Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions cts_runner/fail.lst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// appear in this file in order -- including ones in comments.
webgpu:api,operation,rendering,3d_texture_slices:* // https://github.com/gfx-rs/wgpu/issues/9455

webgpu:api,validation,buffer,create:new_usages,* // https://github.com/denoland/deno/issues/33846; possibly issues with wgpu extensions
webgpu:api,validation,buffer,mapping:* // crash
webgpu:api,validation,capability_checks,features,* // 21%, TypeError not thrown for missing features (needs deno_webgpu fix)
webgpu:api,validation,capability_checks,limits,* // 60%, workgroup storage size validation unimplemented; interstage vars counting; bind group timing on dx12
Expand All @@ -22,6 +23,7 @@ webgpu:api,validation,compute_pipeline:overrides,workgroup_size,limits:* // 0%
webgpu:api,validation,createBindGroup:buffer,resource_state:* // 0%, https://github.com/gfx-rs/wgpu/issues/7881
webgpu:api,validation,createBindGroup:external_texture,* // 0%, no external external texture in deno
webgpu:api,validation,createBindGroup:texture,resource_state:* // crash, https://github.com/gfx-rs/wgpu/issues/7881
webgpu:api,validation,createTexture:new_usages,* // https://github.com/denoland/deno/issues/33846; possibly issues with wgpu extensions
webgpu:api,validation,createView:texture_state:* // 0%, https://github.com/gfx-rs/wgpu/issues/7881
webgpu:api,validation,encoding,cmds,copyTextureToTexture:copy_ranges:* // ***, https://github.com/gfx-rs/wgpu/issues/8118
webgpu:api,validation,encoding,cmds,debug:* // 92%, https://github.com/gfx-rs/wgpu/issues/8039
Expand Down
2 changes: 1 addition & 1 deletion cts_runner/revision.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8640b4243d0234cf2d2085e3837efafbcc6faa09
2e0221e96fba1b05238dba31f8ca4a2d5ae4b06e
14 changes: 12 additions & 2 deletions cts_runner/test.lst
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ fails-if(vulkan) webgpu:api,operation,vertex_state,correctness:array_stride_zero
webgpu:api,operation,vertex_state,correctness:non_zero_array_stride_and_attribute_offset:*
webgpu:api,operation,vertex_state,correctness:setVertexBuffer_offset_and_attribute_offset:*

webgpu:api,validation,buffer,create:*
webgpu:api,validation,buffer,create:createBuffer_invalid_and_oom,*
webgpu:api,validation,buffer,create:limit,*
webgpu:api,validation,buffer,create:size,*
webgpu:api,validation,buffer,create:usage,*
webgpu:api,validation,buffer,destroy:*
webgpu:api,validation,capability_checks,features,clip_distances:*
webgpu:api,validation,capability_checks,limits,maxBindGroups:setBindGroup,*
Expand Down Expand Up @@ -118,7 +121,14 @@ webgpu:api,validation,createBindGroupLayout:visibility,*
webgpu:api,validation,createBindGroupLayout:visibility:*
webgpu:api,validation,createPipelineLayout:*
webgpu:api,validation,createSampler:*
webgpu:api,validation,createTexture:*
webgpu:api,validation,createTexture:dimension_type_and_format_compatibility:*
webgpu:api,validation,createTexture:mipLevelCount,*
webgpu:api,validation,createTexture:sample_count,*
webgpu:api,validation,createTexture:sampleCount,*
webgpu:api,validation,createTexture:texture_size,*
webgpu:api,validation,createTexture:texture_usage,*
webgpu:api,validation,createTexture:viewFormats:*
webgpu:api,validation,createTexture:zero_size_and_usage:*
webgpu:api,validation,createView:array_layers:*
webgpu:api,validation,createView:aspect:*
webgpu:api,validation,createView:cube_faces_square:*
Expand Down
11 changes: 9 additions & 2 deletions deno_webgpu/device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ use crate::query_set::GPUQuerySet;
use crate::render_bundle::GPURenderBundleEncoder;
use crate::render_pipeline::GPURenderPipeline;
use crate::shader::GPUCompilationInfo;
use crate::webidl::GPUTextureUsageFlags;
use crate::Instance;

/// External memory associated with device and queue, to encourage V8 to garbage
Expand Down Expand Up @@ -214,14 +215,20 @@ impl GPUDevice {
&self,
#[webidl] descriptor: super::texture::GPUTextureDescriptor,
) -> Result<GPUTexture, JsErrorBox> {
// Validation of the usage needs to happen on the device timeline, so
// don't raise an error immediately if it isn't valid. wgpu will
// reject `TextureUsages::empty()`.
let usage = wgpu_types::TextureUsages::from_bits(descriptor.usage)
.unwrap_or(wgpu_types::TextureUsages::empty());

let wgpu_descriptor = wgpu_core::resource::TextureDescriptor {
label: crate::transform_label(descriptor.label.clone()),
size: descriptor.size.into(),
mip_level_count: descriptor.mip_level_count,
sample_count: descriptor.sample_count,
dimension: descriptor.dimension.clone().into(),
format: descriptor.format.clone().into(),
usage: descriptor.usage.into(),
usage,
view_formats: descriptor
.view_formats
.into_iter()
Expand All @@ -247,7 +254,7 @@ impl GPUDevice {
sample_count: wgpu_descriptor.sample_count,
dimension: descriptor.dimension,
format: descriptor.format,
usage: descriptor.usage,
usage: GPUTextureUsageFlags(usage),
})
}

Expand Down
2 changes: 1 addition & 1 deletion deno_webgpu/texture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ pub(crate) struct GPUTextureDescriptor {
#[webidl(default = GPUTextureDimension::D2)]
pub dimension: GPUTextureDimension,
pub format: GPUTextureFormat,
pub usage: GPUTextureUsageFlags,
pub usage: u32,
#[webidl(default = vec![])]
pub view_formats: Vec<GPUTextureFormat>,
}
Expand Down