Commit 09a1eb1d authored by Kai Ninomiya's avatar Kai Ninomiya Committed by Commit Bot

Support GPUTextureDescriptor.size.depth for 2d-array textures

Deprecates GPUTextureDescriptor.arrayLayerCount.

Bug: 1069302
Change-Id: I2f3c327c793e6e9cba1df7f3d5e3ae07cda0b3a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2143379
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: default avatarCorentin Wallez <cwallez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758039}
parent 407aa3d6
...@@ -14,7 +14,8 @@ namespace blink { ...@@ -14,7 +14,8 @@ namespace blink {
namespace { namespace {
WGPUTextureDescriptor AsDawnType(const GPUTextureDescriptor* webgpu_desc) { WGPUTextureDescriptor AsDawnType(const GPUTextureDescriptor* webgpu_desc,
GPUDevice* device) {
DCHECK(webgpu_desc); DCHECK(webgpu_desc);
WGPUTextureDescriptor dawn_desc = {}; WGPUTextureDescriptor dawn_desc = {};
...@@ -23,7 +24,17 @@ WGPUTextureDescriptor AsDawnType(const GPUTextureDescriptor* webgpu_desc) { ...@@ -23,7 +24,17 @@ WGPUTextureDescriptor AsDawnType(const GPUTextureDescriptor* webgpu_desc) {
dawn_desc.dimension = dawn_desc.dimension =
AsDawnEnum<WGPUTextureDimension>(webgpu_desc->dimension()); AsDawnEnum<WGPUTextureDimension>(webgpu_desc->dimension());
dawn_desc.size = AsDawnType(&webgpu_desc->size()); dawn_desc.size = AsDawnType(&webgpu_desc->size());
dawn_desc.arrayLayerCount = webgpu_desc->arrayLayerCount();
if (webgpu_desc->hasArrayLayerCount()) {
device->AddConsoleWarning("arrayLayerCount is deprecated: use size.depth");
dawn_desc.arrayLayerCount = webgpu_desc->arrayLayerCount();
} else {
if (dawn_desc.dimension == WGPUTextureDimension_2D) {
dawn_desc.arrayLayerCount = dawn_desc.size.depth;
dawn_desc.size.depth = 1;
}
}
dawn_desc.format = AsDawnEnum<WGPUTextureFormat>(webgpu_desc->format()); dawn_desc.format = AsDawnEnum<WGPUTextureFormat>(webgpu_desc->format());
dawn_desc.mipLevelCount = webgpu_desc->mipLevelCount(); dawn_desc.mipLevelCount = webgpu_desc->mipLevelCount();
dawn_desc.sampleCount = webgpu_desc->sampleCount(); dawn_desc.sampleCount = webgpu_desc->sampleCount();
...@@ -72,7 +83,7 @@ GPUTexture* GPUTexture::Create(GPUDevice* device, ...@@ -72,7 +83,7 @@ GPUTexture* GPUTexture::Create(GPUDevice* device,
return nullptr; return nullptr;
} }
WGPUTextureDescriptor dawn_desc = AsDawnType(webgpu_desc); WGPUTextureDescriptor dawn_desc = AsDawnType(webgpu_desc, device);
return MakeGarbageCollected<GPUTexture>( return MakeGarbageCollected<GPUTexture>(
device, device,
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
dictionary GPUTextureDescriptor : GPUObjectDescriptorBase { dictionary GPUTextureDescriptor : GPUObjectDescriptorBase {
required GPUExtent3D size; required GPUExtent3D size;
unsigned long arrayLayerCount = 1; // TODO(crbug.com/1069302): arrayLayerCount is deprecated; remove it.
unsigned long arrayLayerCount;
unsigned long mipLevelCount = 1; unsigned long mipLevelCount = 1;
unsigned long sampleCount = 1; unsigned long sampleCount = 1;
GPUTextureDimension dimension = "2d"; GPUTextureDimension dimension = "2d";
......
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