diff --git a/src/webgpu/api/validation/createTexture.spec.ts b/src/webgpu/api/validation/createTexture.spec.ts index 8303947efa18..e2093f9efefa 100644 --- a/src/webgpu/api/validation/createTexture.spec.ts +++ b/src/webgpu/api/validation/createTexture.spec.ts @@ -34,7 +34,6 @@ import { poptions, params } from '../../../common/framework/params_builder.js'; import { makeTestGroup } from '../../../common/framework/test_group.js'; import { kAllTextureFormats, kAllTextureFormatInfo } from '../../capability_info.js'; import { maxMipLevelCount } from '../../util/texture/base.js'; -import { standardizeExtent3D } from '../../util/unions.js'; import { ValidationTest } from './validation_test.js'; @@ -192,10 +191,7 @@ g.test('mipLevelCount,bound_check') usage: GPUTextureUsage.SAMPLED, }; - const mipLevelCount = maxMipLevelCount( - standardizeExtent3D(descriptor.size), - descriptor.dimension - ); + const mipLevelCount = maxMipLevelCount(descriptor); descriptor.mipLevelCount = mipLevelCount; t.device.createTexture(descriptor); diff --git a/src/webgpu/util/texture/base.ts b/src/webgpu/util/texture/base.ts index 67db392c4d1c..5f2c2269d800 100644 --- a/src/webgpu/util/texture/base.ts +++ b/src/webgpu/util/texture/base.ts @@ -1,9 +1,16 @@ -export function maxMipLevelCount( - size: GPUExtent3DDict, - dimension: GPUTextureDimension | undefined -): number { - let maxMippedDimension = size.width; - if (dimension !== '1d') maxMippedDimension = Math.max(maxMippedDimension, size.height); - if (dimension === '3d') maxMippedDimension = Math.max(maxMippedDimension, size.depth); +import { standardizeExtent3D } from '../../util/unions.js'; + +export function maxMipLevelCount({ + size, + dimension = '2d', +}: { + readonly size: GPUExtent3D; + readonly dimension?: GPUTextureDimension; +}): number { + const sizeDict = standardizeExtent3D(size); + + let maxMippedDimension = sizeDict.width; + if (dimension !== '1d') maxMippedDimension = Math.max(maxMippedDimension, sizeDict.height); + if (dimension === '3d') maxMippedDimension = Math.max(maxMippedDimension, sizeDict.depth); return Math.floor(Math.log2(maxMippedDimension)) + 1; }