经纬志
首页 / luma.gl / API 文档

DeviceLimits

先看结论

当前后端的硬性上限:尺寸、数量与对齐要求。分配资源前按它取值,代码才能跨设备运行。

最后验证 2026-11-03 · luma.gl 9.4 · 更新 2026-10-29 · 引用本文
device.limits → DeviceLimits

数值由后端与显卡决定,只读。不要把它们写成常量。

纹理与缓冲区

属性说明
maxTextureDimension1D一维纹理的最大宽度
maxTextureDimension2D二维纹理的最大边长
maxTextureDimension3D三维纹理的最大边长
maxTextureArrayLayers数组纹理的最大层数
maxBufferSize单个缓冲区允许的最大字节数
maxUniformBufferBindingSize单个 uniform 块可绑定的最大字节数
maxStorageBufferBindingSize单个存储缓冲可绑定的最大字节数
minUniformBufferOffsetAlignmentuniform 缓冲偏移的最小对齐字节数
minStorageBufferOffsetAlignment存储缓冲偏移的最小对齐字节数

绑定与顶点

属性说明
maxBindGroups绑定组数量上限
maxBindingsPerBindGroup单个绑定组内的绑定数量上限
maxSampledTexturesPerShaderStage每阶段可采样的纹理数量
maxSamplersPerShaderStage每阶段的采样器数量
maxUniformBuffersPerShaderStage每阶段的 uniform 缓冲数量
maxStorageBuffersPerShaderStage每阶段的存储缓冲数量
maxVertexBuffers顶点缓冲区数量
maxVertexAttributes顶点属性数量
maxVertexBufferArrayStride顶点缓冲的步长上限

渲染目标与计算

属性说明
maxColorAttachments一个渲染通道的颜色附件数量
maxColorAttachmentBytesPerSample每个采样点占用的附件字节上限
maxComputeWorkgroupSizeX / Y / Z单个工作组三个维度的最大尺寸
maxComputeInvocationsPerWorkgroup单个工作组的调用总数上限
maxComputeWorkgroupsPerDimension单次派发在一个维度上的工作组数量上限
maxComputeWorkgroupStorageSize工作组共享存储的字节上限

按上限分配

const limits = device.limits;

/* 纹理边长不能超过后端上限 */
const size = Math.min(requestedSize, limits.maxTextureDimension2D);

const texture = device.createTexture({
  width: size,
  height: size,
  format: 'rgba8unorm',
  usage: Texture.SAMPLE | Texture.COPY_DST
});

/* uniform 偏移必须按对齐要求取整 */
const alignedOffset = Math.ceil(byteOffset / limits.minUniformBufferOffsetAlignment)
  * limits.minUniformBufferOffsetAlignment;

上传大纹理前做一次钳制,比创建失败后再回退简单。 对齐要求用于动态 uniform 的多段写入,偏移不齐会导致数据错位。

两个后端的数值不同

项WebGL 2WebGPU
最大二维纹理通常为数千万像素级由适配器报告,常见 8192 或更高
绑定组概念无原生支持,luma.gl 逻辑模拟原生支持
计算相关上限无计算阶段,数值不适用有实际意义

表中不给具体数字,因为同一后端在不同显卡上也会变化。 需要判断能否处理某张影像时,读实际值再比较。

与能力查询配合

上限回答「最大多少」,device.features 回答「有没有」。 使用压缩纹理、浮点渲染这类功能,两项都要检查: 格式可能在上限内,但后端根本没有对应能力。

不要用上限当性能目标。 创建 16384 见方的纹理在语法上合法,但与实时渲染的预算无关。 显存总量、带宽与填充率都不在 limits 里, 实际可用尺寸要按帧率与设备内存自行评估。

引用本文

经纬志(2026)。《DeviceLimits》。https://www.jingweizhi.com/lumagl/api/device-limits.html(访问日期 2026-11-03)。