Commit d83b6022 authored by Kai Ninomiya's avatar Kai Ninomiya Committed by Commit Bot

Support GPUBindGroupLayoutEntry.viewDimension

Deprecates GPUBindGroupLayoutEntry.textureDimension.

Bug: 1069302
Change-Id: Idbf0928116bf01f702808f95ecc6d0a63a2caea2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2143378Reviewed-by: default avatarCorentin Wallez <cwallez@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758017}
parent 6ddc6aba
...@@ -13,15 +13,28 @@ ...@@ -13,15 +13,28 @@
namespace blink { namespace blink {
WGPUBindGroupLayoutEntry AsDawnType( WGPUBindGroupLayoutEntry AsDawnType(
const GPUBindGroupLayoutEntry* webgpu_binding) { const GPUBindGroupLayoutEntry* webgpu_binding,
GPUDevice* device) {
WGPUBindGroupLayoutEntry dawn_binding = {}; WGPUBindGroupLayoutEntry dawn_binding = {};
dawn_binding.binding = webgpu_binding->binding(); dawn_binding.binding = webgpu_binding->binding();
dawn_binding.type = AsDawnEnum<WGPUBindingType>(webgpu_binding->type()); dawn_binding.type = AsDawnEnum<WGPUBindingType>(webgpu_binding->type());
dawn_binding.visibility = dawn_binding.visibility =
AsDawnEnum<WGPUShaderStage>(webgpu_binding->visibility()); AsDawnEnum<WGPUShaderStage>(webgpu_binding->visibility());
dawn_binding.textureDimension =
AsDawnEnum<WGPUTextureViewDimension>(webgpu_binding->textureDimension()); // Note: in this case we check for the deprecated member first, because
// the new member is optional so we can't check for its presence.
if (webgpu_binding->hasTextureDimension()) {
device->AddConsoleWarning(
"GPUBindGroupLayoutEntry.textureDimension is deprecated: renamed to "
"viewDimension");
dawn_binding.textureDimension = AsDawnEnum<WGPUTextureViewDimension>(
webgpu_binding->textureDimension());
} else {
dawn_binding.textureDimension =
AsDawnEnum<WGPUTextureViewDimension>(webgpu_binding->viewDimension());
}
dawn_binding.textureComponentType = AsDawnEnum<WGPUTextureComponentType>( dawn_binding.textureComponentType = AsDawnEnum<WGPUTextureComponentType>(
webgpu_binding->textureComponentType()); webgpu_binding->textureComponentType());
dawn_binding.multisampled = webgpu_binding->multisampled(); dawn_binding.multisampled = webgpu_binding->multisampled();
...@@ -30,6 +43,19 @@ WGPUBindGroupLayoutEntry AsDawnType( ...@@ -30,6 +43,19 @@ WGPUBindGroupLayoutEntry AsDawnType(
return dawn_binding; return dawn_binding;
} }
// TODO(crbug.com/1069302): Remove when unused.
std::unique_ptr<WGPUBindGroupLayoutEntry[]> AsDawnType(
const HeapVector<Member<GPUBindGroupLayoutEntry>>& webgpu_objects,
GPUDevice* device) {
wtf_size_t count = webgpu_objects.size();
std::unique_ptr<WGPUBindGroupLayoutEntry[]> dawn_objects(
new WGPUBindGroupLayoutEntry[count]);
for (wtf_size_t i = 0; i < count; ++i) {
dawn_objects[i] = AsDawnType(webgpu_objects[i].Get(), device);
}
return dawn_objects;
}
// static // static
GPUBindGroupLayout* GPUBindGroupLayout::Create( GPUBindGroupLayout* GPUBindGroupLayout::Create(
GPUDevice* device, GPUDevice* device,
...@@ -48,7 +74,8 @@ GPUBindGroupLayout* GPUBindGroupLayout::Create( ...@@ -48,7 +74,8 @@ GPUBindGroupLayout* GPUBindGroupLayout::Create(
std::unique_ptr<WGPUBindGroupLayoutEntry[]> entries; std::unique_ptr<WGPUBindGroupLayoutEntry[]> entries;
if (webgpu_desc->hasEntries()) { if (webgpu_desc->hasEntries()) {
entry_count = static_cast<uint32_t>(webgpu_desc->entries().size()); entry_count = static_cast<uint32_t>(webgpu_desc->entries().size());
entries = entry_count != 0 ? AsDawnType(webgpu_desc->entries()) : nullptr; entries =
entry_count != 0 ? AsDawnType(webgpu_desc->entries(), device) : nullptr;
} else { } else {
if (!webgpu_desc->hasBindings()) { if (!webgpu_desc->hasBindings()) {
exception_state.ThrowTypeError("required member entries is undefined."); exception_state.ThrowTypeError("required member entries is undefined.");
...@@ -56,7 +83,8 @@ GPUBindGroupLayout* GPUBindGroupLayout::Create( ...@@ -56,7 +83,8 @@ GPUBindGroupLayout* GPUBindGroupLayout::Create(
} }
entry_count = static_cast<uint32_t>(webgpu_desc->bindings().size()); entry_count = static_cast<uint32_t>(webgpu_desc->bindings().size());
entries = entry_count != 0 ? AsDawnType(webgpu_desc->bindings()) : nullptr; entries = entry_count != 0 ? AsDawnType(webgpu_desc->bindings(), device)
: nullptr;
} }
WGPUBindGroupLayoutDescriptor dawn_desc = {}; WGPUBindGroupLayoutDescriptor dawn_desc = {};
......
...@@ -8,7 +8,9 @@ dictionary GPUBindGroupLayoutEntry { ...@@ -8,7 +8,9 @@ dictionary GPUBindGroupLayoutEntry {
required unsigned long binding; required unsigned long binding;
required GPUShaderStageFlags visibility; required GPUShaderStageFlags visibility;
required GPUBindingType type; required GPUBindingType type;
GPUTextureViewDimension textureDimension = "2d"; GPUTextureViewDimension viewDimension = "2d";
// TODO(crbug.com/1069302): textureDimension is deprecated; remove it.
GPUTextureViewDimension textureDimension;
GPUTextureComponentType textureComponentType = "float"; GPUTextureComponentType textureComponentType = "float";
boolean multisampled = false; boolean multisampled = false;
boolean hasDynamicOffset = false; boolean hasDynamicOffset = false;
......
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