diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index b6eb2d3eea711..d8d31f419f230 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc @@ -648,6 +648,9 @@ error::Error WebGPUDecoderImpl::InitDawnDeviceAndSetWireServer( if (request_device_properties.textureCompressionBC) { device_descriptor.requiredExtensions.push_back("texture_compression_bc"); } + if (request_device_properties.shaderFloat16) { + device_descriptor.requiredExtensions.push_back("shader_float16"); + } WGPUDevice wgpu_device = dawn_adapters_[requested_adapter_index].CreateDevice(&device_descriptor); diff --git a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc index d2ea6c7c40a4f..969f89b2c65d3 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc @@ -28,6 +28,8 @@ WGPUDeviceProperties AsDawnType(const GPUDeviceDescriptor* descriptor) { requested_device_properties.textureCompressionBC = extension_set.Contains("texture-compression-bc") || extension_set.Contains("textureCompressionBC"); + requested_device_properties.shaderFloat16 = + extension_set.Contains("shader-float16"); return requested_device_properties; } @@ -76,6 +78,9 @@ void GPUAdapter::InitializeExtensionNameList() { extension_name_list_.emplace_back("texture-compression-bc"); extension_name_list_.emplace_back("textureCompressionBC"); } + if (adapter_properties_.shaderFloat16) { + extension_name_list_.emplace_back("shader-float16"); + } } ScriptPromise GPUAdapter::requestDevice(ScriptState* script_state, diff --git a/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl b/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl index 40e4002bbb0e4..4c7172370c23b 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl +++ b/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl @@ -7,7 +7,8 @@ enum GPUExtensionName { "texture-compression-bc", // Non-standard extension name string. Remove after a transition period. - "textureCompressionBC" + "textureCompressionBC", + "shader-float16" }; [