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: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Cr-Commit-Position: refs/heads/master@{#804020}
This commit is contained in:
gpu/command_buffer/service
third_party/blink/renderer/modules/webgpu
@@ -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) {
|
|||||||
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() {
|
|||||||
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 @@
|
|||||||
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"
|
||||||
};
|
};
|
||||||
|
|
||||||
[
|
[
|
||||||
|
Reference in New Issue
Block a user