Commit 08757ded authored by Xinghua Cao's avatar Xinghua Cao Committed by Commit Bot

WebGPU: add shader_float16 extension

This patch exposes the shader_shader16 extension, which allows use
of 16-bit floating-point types in shaders for arithmetic operations
and use of 16-bit types in buffers.

Bug: 996713
Change-Id: Ib09301fb9d396a85926952f9df396f426b15ee1b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2324318
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: default avatarCorentin Wallez <cwallez@chromium.org>
Reviewed-by: default avatarKai Ninomiya <kainino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804020}
parent 8258fb07
...@@ -648,6 +648,9 @@ error::Error WebGPUDecoderImpl::InitDawnDeviceAndSetWireServer( ...@@ -648,6 +648,9 @@ error::Error WebGPUDecoderImpl::InitDawnDeviceAndSetWireServer(
if (request_device_properties.textureCompressionBC) { if (request_device_properties.textureCompressionBC) {
device_descriptor.requiredExtensions.push_back("texture_compression_bc"); device_descriptor.requiredExtensions.push_back("texture_compression_bc");
} }
if (request_device_properties.shaderFloat16) {
device_descriptor.requiredExtensions.push_back("shader_float16");
}
WGPUDevice wgpu_device = WGPUDevice wgpu_device =
dawn_adapters_[requested_adapter_index].CreateDevice(&device_descriptor); dawn_adapters_[requested_adapter_index].CreateDevice(&device_descriptor);
......
...@@ -28,6 +28,8 @@ WGPUDeviceProperties AsDawnType(const GPUDeviceDescriptor* descriptor) { ...@@ -28,6 +28,8 @@ WGPUDeviceProperties AsDawnType(const GPUDeviceDescriptor* descriptor) {
requested_device_properties.textureCompressionBC = requested_device_properties.textureCompressionBC =
extension_set.Contains("texture-compression-bc") || extension_set.Contains("texture-compression-bc") ||
extension_set.Contains("textureCompressionBC"); extension_set.Contains("textureCompressionBC");
requested_device_properties.shaderFloat16 =
extension_set.Contains("shader-float16");
return requested_device_properties; return requested_device_properties;
} }
...@@ -76,6 +78,9 @@ void GPUAdapter::InitializeExtensionNameList() { ...@@ -76,6 +78,9 @@ void GPUAdapter::InitializeExtensionNameList() {
extension_name_list_.emplace_back("texture-compression-bc"); extension_name_list_.emplace_back("texture-compression-bc");
extension_name_list_.emplace_back("textureCompressionBC"); extension_name_list_.emplace_back("textureCompressionBC");
} }
if (adapter_properties_.shaderFloat16) {
extension_name_list_.emplace_back("shader-float16");
}
} }
ScriptPromise GPUAdapter::requestDevice(ScriptState* script_state, ScriptPromise GPUAdapter::requestDevice(ScriptState* script_state,
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
enum GPUExtensionName { enum GPUExtensionName {
"texture-compression-bc", "texture-compression-bc",
// Non-standard extension name string. Remove after a transition period. // Non-standard extension name string. Remove after a transition period.
"textureCompressionBC" "textureCompressionBC",
"shader-float16"
}; };
[ [
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment