Skip to content

impr: Unify bufferShorthand and bufferUsage#2665

Draft
aleksanderkatan wants to merge 17 commits into
mainfrom
impr-unify-shorthand-and-as
Draft

impr: Unify bufferShorthand and bufferUsage#2665
aleksanderkatan wants to merge 17 commits into
mainfrom
impr-unify-shorthand-and-as

Conversation

@aleksanderkatan

@aleksanderkatan aleksanderkatan commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

bufferUsage.ts functionality was moved.

  • TgpuFixedBufferUsage was merged into TgpuBufferShorthand,
  • TgpuLaidOutBufferImpl was moved to another file,
  • remaining types were deprecated.

Buffer usages were not usable in bind group layouts, and so are shorthands (ATM), so there is no issue there.

buffer.$usage(...).as(...) now returns a bufferShorthand. I think we should rename BufferShorthand, for example to FixedBuffer (in another PR so that this one is easier to review), what do you think?

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown

pkg.pr.new

packages
Ready to be installed by your favorite package manager ⬇️

https://pkg.pr.new/software-mansion/TypeGPU/typegpu@ef942b66e2044e7b4dc3c8e4d923cc505ccf09b7
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/cli@ef942b66e2044e7b4dc3c8e4d923cc505ccf09b7
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/noise@ef942b66e2044e7b4dc3c8e4d923cc505ccf09b7
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/react@ef942b66e2044e7b4dc3c8e4d923cc505ccf09b7
https://pkg.pr.new/software-mansion/TypeGPU/unplugin-typegpu@ef942b66e2044e7b4dc3c8e4d923cc505ccf09b7

benchmark
view benchmark

commit
view commit

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown

Bundle size comparison (import * as ... in PR vs import * as ... in target):

🟢 Decreased (max -0.13%) ➖ Unchanged 🔴 Increased ❔ Unknown
21 299 0 0

import { ... } in PR vs import * as ... in PR (is the library tree-Shakeable?):

Click to reveal the results table (297 entries).
Test tsdown
d_Void.ts 87.41 kB ($${\color{red}+12094.3\%}$$)
d_sampler.ts 87.41 kB ($${\color{red}+11963.2\%}$$)
d_isPtr.ts 87.41 kB ($${\color{red}+11802.5\%}$$)
d_comparisonSampler.ts 87.42 kB ($${\color{red}+11788.3\%}$$)
d_isSizeAttrib.ts 87.42 kB ($${\color{red}+11771.9\%}$$)
d_isWgslArray.ts 87.42 kB ($${\color{red}+11771.8\%}$$)
d_isAlignAttrib.ts 87.42 kB ($${\color{red}+11756.3\%}$$)
d_isWgslStruct.ts 87.42 kB ($${\color{red}+11756.2\%}$$)
d_isAtomic.ts 87.41 kB ($${\color{red}+11755.6\%}$$)
d_isBuiltinAttrib.ts 87.42 kB ($${\color{red}+11725.2\%}$$)
d_isLocationAttrib.ts 87.42 kB ($${\color{red}+11709.8\%}$$)
d_isDecorated.ts 87.42 kB ($${\color{red}+11709.1\%}$$)
d_isInterpolateAttrib.ts 87.42 kB ($${\color{red}+11663.6\%}$$)
d_atomic.ts 87.41 kB ($${\color{red}+11390.1\%}$$)
d_ptrHandle.ts 87.41 kB ($${\color{red}+10418.3\%}$$)
d_ptrUniform.ts 87.41 kB ($${\color{red}+10406.1\%}$$)
d_ptrStorage.ts 87.41 kB ($${\color{red}+10357.0\%}$$)
d_ptrPrivate.ts 87.41 kB ($${\color{red}+10332.6\%}$$)
d_ptrFn.ts 87.41 kB ($${\color{red}+10319.9\%}$$)
d_ptrWorkgroup.ts 87.42 kB ($${\color{red}+10308.6\%}$$)
d_textureExternal.ts 87.42 kB ($${\color{red}+10154.0\%}$$)
d_textureStorage1d.ts 87.42 kB ($${\color{red}+8532.4\%}$$)
d_textureStorage2d.ts 87.42 kB ($${\color{red}+8532.4\%}$$)
d_textureStorage3d.ts 87.42 kB ($${\color{red}+8532.4\%}$$)
d_textureStorage2dArray.ts 87.42 kB ($${\color{red}+8385.6\%}$$)
d_isDisarray.ts 87.41 kB ($${\color{red}+7758.8\%}$$)
d_isUnstruct.ts 87.41 kB ($${\color{red}+7758.8\%}$$)
d_isLooseDecorated.ts 87.42 kB ($${\color{red}+7711.3\%}$$)
d_isLooseData.ts 87.42 kB ($${\color{red}+7447.5\%}$$)
d_isWgslData.ts 87.41 kB ($${\color{red}+6570.0\%}$$)
d_unstruct.ts 87.41 kB ($${\color{red}+5547.3\%}$$)
d_isData.ts 87.41 kB ($${\color{red}+4735.7\%}$$)
d_deepEqual.ts 87.41 kB ($${\color{red}+3887.1\%}$$)
d_struct.ts 87.41 kB ($${\color{red}+2325.0\%}$$)
d_ref.ts 87.41 kB ($${\color{red}+1725.5\%}$$)
std_discard.ts 103.15 kB ($${\color{red}+624.8\%}$$)
std_copy.ts 103.14 kB ($${\color{red}+612.6\%}$$)
std_arrayLength.ts 103.15 kB ($${\color{red}+612.4\%}$$)
std_isBeingTranspiled.ts 103.16 kB ($${\color{red}+610.9\%}$$)
std_getTargetShaderLanguage.ts 103.16 kB ($${\color{red}+607.7\%}$$)
std_extensionEnabled.ts 103.16 kB ($${\color{red}+605.2\%}$$)
std_range.ts 103.14 kB ($${\color{red}+592.5\%}$$)
std_dpdx.ts 103.14 kB ($${\color{red}+584.2\%}$$)
std_fwidthCoarse.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_dpdxCoarse.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_dpdyCoarse.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_fwidthFine.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_dpdxFine.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_dpdyFine.ts 103.15 kB ($${\color{red}+584.0\%}$$)
std_fwidth.ts 103.15 kB ($${\color{red}+583.9\%}$$)
std_dpdy.ts 103.14 kB ($${\color{red}+583.9\%}$$)
d_bool.ts 87.41 kB ($${\color{red}+571.4\%}$$)
d_f16.ts 87.41 kB ($${\color{red}+571.4\%}$$)
d_f32.ts 87.41 kB ($${\color{red}+571.4\%}$$)
d_i32.ts 87.41 kB ($${\color{red}+571.4\%}$$)
d_u32.ts 87.41 kB ($${\color{red}+571.4\%}$$)
d_u16.ts 87.41 kB ($${\color{red}+570.2\%}$$)
std_atomicLoad.ts 103.15 kB ($${\color{red}+551.5\%}$$)
std_textureBarrier.ts 103.15 kB ($${\color{red}+551.3\%}$$)
std_atomicStore.ts 103.15 kB ($${\color{red}+551.3\%}$$)
std_workgroupBarrier.ts 103.16 kB ($${\color{red}+551.1\%}$$)
std_storageBarrier.ts 103.15 kB ($${\color{red}+551.1\%}$$)
std_atomicAdd.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicAnd.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicMax.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicMin.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicSub.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicXor.ts 103.15 kB ($${\color{red}+551.0\%}$$)
std_atomicOr.ts 103.15 kB ($${\color{red}+551.0\%}$$)
d_textureDepth2d.ts 87.42 kB ($${\color{red}+549.4\%}$$)
d_textureDepthCube.ts 87.42 kB ($${\color{red}+549.1\%}$$)
d_texture1d.ts 87.41 kB ($${\color{red}+548.8\%}$$)
d_texture2d.ts 87.41 kB ($${\color{red}+548.8\%}$$)
d_texture3d.ts 87.41 kB ($${\color{red}+548.8\%}$$)
d_textureDepth2dArray.ts 87.42 kB ($${\color{red}+548.6\%}$$)
d_textureCube.ts 87.42 kB ($${\color{red}+548.6\%}$$)
d_textureDepthCubeArray.ts 87.42 kB ($${\color{red}+548.3\%}$$)
d_textureDepthMultisampled2d.ts 87.43 kB ($${\color{red}+548.2\%}$$)
d_texture2dArray.ts 87.42 kB ($${\color{red}+548.0\%}$$)
d_textureCubeArray.ts 87.42 kB ($${\color{red}+547.7\%}$$)
d_textureMultisampled2d.ts 87.42 kB ($${\color{red}+547.7\%}$$)
d_disarrayOf.ts 87.41 kB ($${\color{red}+480.3\%}$$)
d_vec2b.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec2f.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec2h.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec2i.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec2u.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec3b.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec3f.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec3h.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec3i.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec3u.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec4b.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec4f.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec4h.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec4i.ts 87.41 kB ($${\color{red}+349.4\%}$$)
d_vec4u.ts 87.41 kB ($${\color{red}+349.4\%}$$)
std_subgroupAdd.ts 103.15 kB ($${\color{red}+329.3\%}$$)
std_subgroupBroadcastFirst.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupExclusiveAdd.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupExclusiveMul.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupInclusiveAdd.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupInclusiveMul.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupShuffleDown.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupShuffleXor.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupBroadcast.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupShuffleUp.ts 103.16 kB ($${\color{red}+329.3\%}$$)
std_subgroupShuffle.ts 103.15 kB ($${\color{red}+329.3\%}$$)
std_subgroupBallot.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupElect.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupAll.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupAnd.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupAny.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupMax.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupMin.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupMul.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupXor.ts 103.15 kB ($${\color{red}+329.2\%}$$)
std_subgroupOr.ts 103.15 kB ($${\color{red}+329.2\%}$$)
d_formatToWGSLType.ts 87.42 kB ($${\color{red}+317.5\%}$$)
d_uint8.ts 87.41 kB ($${\color{red}+317.3\%}$$)
d_unorm10_10_10_2.ts 87.42 kB ($${\color{red}+317.3\%}$$)
d_unorm8x4_bgra.ts 87.42 kB ($${\color{red}+317.3\%}$$)
d_float16x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float16x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float32x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float32x3.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float32x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm16x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm16x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm16x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm16x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint16x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint16x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint32x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint32x3.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint32x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm8x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm8x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint16x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint16x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint32x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint32x3.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint32x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm8x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm8x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float16.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_float32.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint8x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint8x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm16.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint8x2.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint8x4.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm16.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint16.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint32.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_snorm8.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint16.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_uint32.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_unorm8.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_sint8.ts 87.41 kB ($${\color{red}+317.2\%}$$)
d_packedFormats.ts 87.42 kB ($${\color{red}+316.9\%}$$)
d_isPackedData.ts 87.42 kB ($${\color{red}+316.0\%}$$)
std_textureDimensions.ts 103.16 kB ($${\color{red}+300.1\%}$$)
std_textureGather.ts 103.15 kB ($${\color{red}+300.1\%}$$)
std_textureSampleBaseClampToEdge.ts 103.17 kB ($${\color{red}+300.0\%}$$)
std_textureSampleCompareLevel.ts 103.16 kB ($${\color{red}+300.0\%}$$)
std_textureSampleCompare.ts 103.16 kB ($${\color{red}+300.0\%}$$)
std_textureSampleLevel.ts 103.16 kB ($${\color{red}+300.0\%}$$)
std_textureSampleBias.ts 103.16 kB ($${\color{red}+300.0\%}$$)
std_textureSampleGrad.ts 103.16 kB ($${\color{red}+300.0\%}$$)
std_textureSample.ts 103.15 kB ($${\color{red}+300.0\%}$$)
std_textureStore.ts 103.15 kB ($${\color{red}+300.0\%}$$)
std_textureLoad.ts 103.15 kB ($${\color{red}+300.0\%}$$)
d_alignmentOf.ts 87.42 kB ($${\color{red}+299.2\%}$$)
std_translation4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_rotationX4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_rotationY4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_rotationZ4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_identity2.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_identity3.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_identity4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
std_scaling4.ts 103.15 kB ($${\color{red}+281.6\%}$$)
d_isBuiltin.ts 87.41 kB ($${\color{red}+255.1\%}$$)
d_sizeOf.ts 87.41 kB ($${\color{red}+254.4\%}$$)
d_isContiguous.ts 87.42 kB ($${\color{red}+254.3\%}$$)
d_getLongestContiguousPrefix.ts 87.43 kB ($${\color{red}+254.2\%}$$)
d_arrayOf.ts 87.41 kB ($${\color{red}+233.4\%}$$)
d_size.ts 87.41 kB ($${\color{red}+231.7\%}$$)
d_align.ts 87.41 kB ($${\color{red}+231.7\%}$$)
d_location.ts 87.41 kB ($${\color{red}+231.6\%}$$)
d_interpolate.ts 87.42 kB ($${\color{red}+231.6\%}$$)
d_invariant.ts 87.41 kB ($${\color{red}+227.0\%}$$)
d_mat4x4f.ts 87.41 kB ($${\color{red}+223.4\%}$$)
d_mat2x2f.ts 87.41 kB ($${\color{red}+223.3\%}$$)
d_mat3x3f.ts 87.41 kB ($${\color{red}+223.3\%}$$)
d_matToArray.ts 87.41 kB ($${\color{red}+221.8\%}$$)
d_builtin.ts 87.41 kB ($${\color{red}+204.8\%}$$)
std_unpack2x16float.ts 103.15 kB ($${\color{red}+186.6\%}$$)
std_unpack4x8unorm.ts 103.15 kB ($${\color{red}+186.6\%}$$)
std_pack2x16float.ts 103.15 kB ($${\color{red}+186.6\%}$$)
std_pack4x8unorm.ts 103.15 kB ($${\color{red}+186.6\%}$$)
std_bitcastU32toF32.ts 103.15 kB ($${\color{red}+133.2\%}$$)
std_bitcastU32toI32.ts 103.15 kB ($${\color{red}+133.2\%}$$)
std_neg.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_bitShiftRight.ts 103.15 kB ($${\color{red}+113.1\%}$$)
std_bitShiftLeft.ts 103.15 kB ($${\color{red}+113.1\%}$$)
std_add.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_div.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_mod.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_mul.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_sub.ts 103.14 kB ($${\color{red}+113.1\%}$$)
std_translate4.ts 103.15 kB ($${\color{red}+109.8\%}$$)
std_rotateX4.ts 103.15 kB ($${\color{red}+109.8\%}$$)
std_scale4.ts 103.15 kB ($${\color{red}+109.8\%}$$)
std_rotateY4.ts 103.15 kB ($${\color{red}+109.8\%}$$)
std_rotateZ4.ts 103.15 kB ($${\color{red}+109.8\%}$$)
d_memoryLayoutOf.ts 87.42 kB ($${\color{red}+108.2\%}$$)
std_and.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_or.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_select.ts 103.15 kB ($${\color{red}+99.2\%}$$)
std_allEq.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_all.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_not.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_eq.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_lt.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_ne.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_isCloseTo.ts 103.15 kB ($${\color{red}+99.2\%}$$)
std_any.ts 103.14 kB ($${\color{red}+99.2\%}$$)
std_ge.ts 103.14 kB ($${\color{red}+99.1\%}$$)
std_gt.ts 103.14 kB ($${\color{red}+99.1\%}$$)
std_le.ts 103.14 kB ($${\color{red}+99.1\%}$$)
std_dot4U8Packed.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_length.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_countTrailingZeros.ts 103.16 kB ($${\color{red}+56.2\%}$$)
std_distance.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_dot.ts 103.14 kB ($${\color{red}+56.2\%}$$)
std_countLeadingZeros.ts 103.16 kB ($${\color{red}+56.2\%}$$)
std_firstTrailingBit.ts 103.16 kB ($${\color{red}+56.2\%}$$)
std_firstLeadingBit.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_fract.ts 103.14 kB ($${\color{red}+56.2\%}$$)
std_frexp.ts 103.14 kB ($${\color{red}+56.2\%}$$)
std_modf.ts 103.14 kB ($${\color{red}+56.2\%}$$)
std_quantizeToF16.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_mix.ts 103.14 kB ($${\color{red}+56.2\%}$$)
std_countOneBits.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_dot4I8Packed.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_determinant.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_extractBits.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_faceForward.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_inverseSqrt.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_reverseBits.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_insertBits.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_smoothstep.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_normalize.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_transpose.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_saturate.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_degrees.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_radians.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_reflect.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_refract.ts 103.15 kB ($${\color{red}+56.2\%}$$)
std_acosh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_asinh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_atan2.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_atanh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_clamp.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_cross.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_floor.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_ldexp.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_round.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_trunc.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_acos.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_asin.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_atan.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_ceil.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_cosh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_exp2.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_log2.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_sign.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_sinh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_sqrt.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_step.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_tanh.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_abs.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_cos.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_exp.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_fma.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_log.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_max.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_min.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_pow.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_sin.ts 103.14 kB ($${\color{red}+56.1\%}$$)
std_tan.ts 103.14 kB ($${\color{red}+56.1\%}$$)
common_fullScreenTriangle.ts 57.18 kB ($${\color{red}+41.5\%}$$)
common_writeSoA.ts 57.17 kB ($${\color{red}+38.6\%}$$)
STATIC_allImports.ts 286.86 kB ($${\color{green}-1.7\%}$$)
STATIC_d.ts 87.40 kB ($${\color{green}-2.6\%}$$)
STATIC_std.ts 103.14 kB ($${\color{green}-2.7\%}$$)

If you wish to run a comparison for other, slower bundlers, run the 'Tree-shake test' from the GitHub Actions menu.

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown

Resolution Time Benchmark

---
config:
  themeVariables:
    xyChart:
      plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
  title "Random Branching (🔴 PR | 🔵 main | 🟢 release)"
  x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
  y-axis "time (ms)"
  line [1.00, 1.91, 4.24, 7.33, 8.41, 13.04, 23.12, 26.27]
  line [0.95, 1.98, 4.63, 6.59, 7.37, 11.63, 22.43, 24.34]
  line [1.03, 2.07, 4.16, 6.89, 7.62, 13.57, 23.16, 22.84]
Loading
---
config:
  themeVariables:
    xyChart:
      plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
  title "Linear Recursion (🔴 PR | 🔵 main | 🟢 release)"
  x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
  y-axis "time (ms)"
  line [0.33, 0.62, 0.77, 0.89, 1.24, 1.30, 1.53, 1.69]
  line [0.37, 0.55, 0.78, 0.89, 1.24, 1.26, 1.49, 1.62]
  line [0.34, 0.57, 0.76, 0.89, 1.19, 1.27, 1.55, 1.71]
Loading
---
config:
  themeVariables:
    xyChart:
      plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
  title "Full Tree (🔴 PR | 🔵 main | 🟢 release)"
  x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
  y-axis "time (ms)"
  line [0.93, 2.14, 4.42, 7.39, 13.40, 26.81, 60.24, 120.93]
  line [0.92, 2.20, 4.85, 6.60, 13.09, 27.61, 58.21, 118.36]
  line [0.83, 2.12, 4.10, 6.64, 13.27, 27.09, 56.62, 116.99]
Loading

@aleksanderkatan aleksanderkatan added the breaking change The completion of this task will not be backwards compatible label Jun 30, 2026
@aleksanderkatan

Copy link
Copy Markdown
Contributor Author

@pullfrog review

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Two regressions slipped into the buffer-usage/shorthand unification: the standalone uniform() constructor loses its generic type parameter, and the deprecated isBufferUsage() predicate is now permanently false because no runtime object reports resourceType === \'buffer-usage\'.

Reviewed changes — unified TgpuBufferShorthand with the old fixed buffer-usage implementation, deprecated the TgpuBufferUsage types, moved TgpuLaidOutBufferImpl to a new file, and updated buffer.as(...) + tests/examples to use the new TgpuMutable/TgpuReadonly/TgpuUniform names.

  • Merged TgpuFixedBufferUsage into TgpuBufferShorthand in packages/typegpu/src/core/buffer/bufferShorthand.ts; buffer.as(...) now returns a shorthand instance directly.
  • Deprecated TgpuBufferUsage types in packages/typegpu/src/core/buffer/bufferUsage.ts, keeping TgpuBufferUniform/TgpuBufferReadonly/TgpuBufferMutable as aliases with a TODO to remove in #2666.
  • Moved TgpuLaidOutBufferImpl to packages/typegpu/src/core/buffer/laidOutBuffer.ts and changed its resourceType to \'laid-out-buffer\'.
  • Updated tests/examples from TgpuBufferMutable/TgpuBufferReadonly to TgpuMutable/TgpuReadonly.

Pullfrog  | Fix all ➔Fix 👍s ➔View workflow run | Using Kimi K2 (free via Pullfrog for OSS) | 𝕏


export function uniform<TData extends AnyWgslData>(
buffer: TgpuBuffer<TData> & UniformFlag,
): TgpuUniform<BaseData> {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ The return type is TgpuUniform<BaseData>, which drops the caller's concrete TData. It should be TgpuUniform<TData> to match the implementation cast and the mutable/readonly constructors.

/**
* @deprecated Use isBufferShorthand instead.
*/
export function isBufferUsage(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This predicate now always returns false. After the unification, buffer objects report resourceType as \'mutable\', \'readonly\', \'uniform\' or \'laid-out-buffer\'; nothing reports \'buffer-usage\' anymore.

Since it is deprecated and not re-exported from the public barrel, the cleanest fix is to either delete it or delegate to isBufferShorthand(value).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change The completion of this task will not be backwards compatible

Projects

None yet

Development

Successfully merging this pull request may close these issues.

impr: Unify TgpuMutable and TgpuBufferMutable (and the Readonly versions)

1 participant