首页 / luma.gl / API 文档
DeviceLimits
先看结论
当前后端的硬性上限:尺寸、数量与对齐要求。分配资源前按它取值,代码才能跨设备运行。
device.limits → DeviceLimits
数值由后端与显卡决定,只读。不要把它们写成常量。
纹理与缓冲区
| 属性 | 说明 |
|---|---|
maxTextureDimension1D | 一维纹理的最大宽度 |
maxTextureDimension2D | 二维纹理的最大边长 |
maxTextureDimension3D | 三维纹理的最大边长 |
maxTextureArrayLayers | 数组纹理的最大层数 |
maxBufferSize | 单个缓冲区允许的最大字节数 |
maxUniformBufferBindingSize | 单个 uniform 块可绑定的最大字节数 |
maxStorageBufferBindingSize | 单个存储缓冲可绑定的最大字节数 |
minUniformBufferOffsetAlignment | uniform 缓冲偏移的最小对齐字节数 |
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 2 | WebGPU |
|---|---|---|
| 最大二维纹理 | 通常为数千万像素级 | 由适配器报告,常见 8192 或更高 |
| 绑定组概念 | 无原生支持,luma.gl 逻辑模拟 | 原生支持 |
| 计算相关上限 | 无计算阶段,数值不适用 | 有实际意义 |
表中不给具体数字,因为同一后端在不同显卡上也会变化。 需要判断能否处理某张影像时,读实际值再比较。
与能力查询配合
上限回答「最大多少」,device.features 回答「有没有」。
使用压缩纹理、浮点渲染这类功能,两项都要检查:
格式可能在上限内,但后端根本没有对应能力。
不要用上限当性能目标。
创建 16384 见方的纹理在语法上合法,但与实时渲染的预算无关。
显存总量、带宽与填充率都不在 limits 里,
实际可用尺寸要按帧率与设备内存自行评估。
经纬志(2026)。《DeviceLimits》。https://www.jingweizhi.com/lumagl/api/device-limits.html(访问日期 2026-11-03)。