chore: Remove deprecated texture layout API and pipeline builder API#2672
chore: Remove deprecated texture layout API and pipeline builder API#2672reczkok wants to merge 3 commits into
Conversation
|
pkg.pr.new packages benchmark commit |
Bundle size comparison (
|
| 🟢 Decreased (max -0.71%) | ➖ Unchanged | 🔴 Increased | ❔ Unknown |
|---|---|---|---|
| 21 | 299 | 0 | 0 |
import * as ... in PR vs import * as ... in target (did bundle size increase?):
| Test | tsdown |
|---|---|
| STATIC_allImports.ts | 290.36 kB ( |
| tgpu_resolveWithContext.ts | 260.52 kB ( |
| tgpu_bindGroupLayout.ts | 260.51 kB ( |
| tgpu_mutableAccessor.ts | 260.51 kB ( |
| tgpu_initFromDevice.ts | 260.51 kB ( |
| tgpu_vertexLayout.ts | 260.51 kB ( |
| tgpu_workgroupVar.ts | 260.51 kB ( |
| tgpu_fragmentFn.ts | 260.51 kB ( |
| tgpu_privateVar.ts | 260.51 kB ( |
| tgpu_computeFn.ts | 260.51 kB ( |
| tgpu_accessor.ts | 260.51 kB ( |
| tgpu_comptime.ts | 260.51 kB ( |
| tgpu_vertexFn.ts | 260.51 kB ( |
| tgpu_resolve.ts | 260.50 kB ( |
| tgpu_unroll.ts | 260.50 kB ( |
| tgpu_const.ts | 260.50 kB ( |
| tgpu_init.ts | 260.50 kB ( |
| tgpu_lazy.ts | 260.50 kB ( |
| tgpu_slot.ts | 260.50 kB ( |
| tgpu_fn.ts | 260.50 kB ( |
| STATIC_tgpu.ts | 260.50 kB ( |
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 ( |
| d_sampler.ts | 87.41 kB ( |
| d_isPtr.ts | 87.41 kB ( |
| d_comparisonSampler.ts | 87.42 kB ( |
| d_isSizeAttrib.ts | 87.42 kB ( |
| d_isWgslArray.ts | 87.42 kB ( |
| d_isAlignAttrib.ts | 87.42 kB ( |
| d_isWgslStruct.ts | 87.42 kB ( |
| d_isAtomic.ts | 87.41 kB ( |
| d_isBuiltinAttrib.ts | 87.42 kB ( |
| d_isLocationAttrib.ts | 87.42 kB ( |
| d_isDecorated.ts | 87.42 kB ( |
| d_isInterpolateAttrib.ts | 87.42 kB ( |
| d_atomic.ts | 87.41 kB ( |
| d_ptrHandle.ts | 87.41 kB ( |
| d_ptrUniform.ts | 87.41 kB ( |
| d_ptrStorage.ts | 87.41 kB ( |
| d_ptrPrivate.ts | 87.41 kB ( |
| d_ptrFn.ts | 87.41 kB ( |
| d_ptrWorkgroup.ts | 87.42 kB ( |
| d_textureExternal.ts | 87.42 kB ( |
| d_textureStorage1d.ts | 87.42 kB ( |
| d_textureStorage2d.ts | 87.42 kB ( |
| d_textureStorage3d.ts | 87.42 kB ( |
| d_textureStorage2dArray.ts | 87.42 kB ( |
| d_isDisarray.ts | 87.41 kB ( |
| d_isUnstruct.ts | 87.41 kB ( |
| d_isLooseDecorated.ts | 87.42 kB ( |
| d_isLooseData.ts | 87.42 kB ( |
| d_isWgslData.ts | 87.41 kB ( |
| d_unstruct.ts | 87.41 kB ( |
| d_isData.ts | 87.41 kB ( |
| d_deepEqual.ts | 87.41 kB ( |
| d_struct.ts | 87.41 kB ( |
| d_ref.ts | 87.41 kB ( |
| std_discard.ts | 103.15 kB ( |
| std_copy.ts | 103.14 kB ( |
| std_arrayLength.ts | 103.15 kB ( |
| std_isBeingTranspiled.ts | 103.16 kB ( |
| std_getTargetShaderLanguage.ts | 103.16 kB ( |
| std_extensionEnabled.ts | 103.16 kB ( |
| std_range.ts | 103.14 kB ( |
| std_dpdx.ts | 103.14 kB ( |
| std_fwidthCoarse.ts | 103.15 kB ( |
| std_dpdxCoarse.ts | 103.15 kB ( |
| std_dpdyCoarse.ts | 103.15 kB ( |
| std_fwidthFine.ts | 103.15 kB ( |
| std_dpdxFine.ts | 103.15 kB ( |
| std_dpdyFine.ts | 103.15 kB ( |
| std_fwidth.ts | 103.15 kB ( |
| std_dpdy.ts | 103.14 kB ( |
| d_bool.ts | 87.41 kB ( |
| d_f16.ts | 87.41 kB ( |
| d_f32.ts | 87.41 kB ( |
| d_i32.ts | 87.41 kB ( |
| d_u32.ts | 87.41 kB ( |
| d_u16.ts | 87.41 kB ( |
| std_atomicLoad.ts | 103.15 kB ( |
| std_textureBarrier.ts | 103.15 kB ( |
| std_atomicStore.ts | 103.15 kB ( |
| std_workgroupBarrier.ts | 103.16 kB ( |
| std_storageBarrier.ts | 103.15 kB ( |
| std_atomicAdd.ts | 103.15 kB ( |
| std_atomicAnd.ts | 103.15 kB ( |
| std_atomicMax.ts | 103.15 kB ( |
| std_atomicMin.ts | 103.15 kB ( |
| std_atomicSub.ts | 103.15 kB ( |
| std_atomicXor.ts | 103.15 kB ( |
| std_atomicOr.ts | 103.15 kB ( |
| d_textureDepth2d.ts | 87.42 kB ( |
| d_textureDepthCube.ts | 87.42 kB ( |
| d_texture1d.ts | 87.41 kB ( |
| d_texture2d.ts | 87.41 kB ( |
| d_texture3d.ts | 87.41 kB ( |
| d_textureDepth2dArray.ts | 87.42 kB ( |
| d_textureCube.ts | 87.42 kB ( |
| d_textureDepthCubeArray.ts | 87.42 kB ( |
| d_textureDepthMultisampled2d.ts | 87.43 kB ( |
| d_texture2dArray.ts | 87.42 kB ( |
| d_textureCubeArray.ts | 87.42 kB ( |
| d_textureMultisampled2d.ts | 87.42 kB ( |
| d_disarrayOf.ts | 87.41 kB ( |
| d_vec2b.ts | 87.41 kB ( |
| d_vec2f.ts | 87.41 kB ( |
| d_vec2h.ts | 87.41 kB ( |
| d_vec2i.ts | 87.41 kB ( |
| d_vec2u.ts | 87.41 kB ( |
| d_vec3b.ts | 87.41 kB ( |
| d_vec3f.ts | 87.41 kB ( |
| d_vec3h.ts | 87.41 kB ( |
| d_vec3i.ts | 87.41 kB ( |
| d_vec3u.ts | 87.41 kB ( |
| d_vec4b.ts | 87.41 kB ( |
| d_vec4f.ts | 87.41 kB ( |
| d_vec4h.ts | 87.41 kB ( |
| d_vec4i.ts | 87.41 kB ( |
| d_vec4u.ts | 87.41 kB ( |
| std_subgroupAdd.ts | 103.15 kB ( |
| std_subgroupBroadcastFirst.ts | 103.16 kB ( |
| std_subgroupExclusiveAdd.ts | 103.16 kB ( |
| std_subgroupExclusiveMul.ts | 103.16 kB ( |
| std_subgroupInclusiveAdd.ts | 103.16 kB ( |
| std_subgroupInclusiveMul.ts | 103.16 kB ( |
| std_subgroupShuffleDown.ts | 103.16 kB ( |
| std_subgroupShuffleXor.ts | 103.16 kB ( |
| std_subgroupBroadcast.ts | 103.16 kB ( |
| std_subgroupShuffleUp.ts | 103.16 kB ( |
| std_subgroupShuffle.ts | 103.15 kB ( |
| std_subgroupBallot.ts | 103.15 kB ( |
| std_subgroupElect.ts | 103.15 kB ( |
| std_subgroupAll.ts | 103.15 kB ( |
| std_subgroupAnd.ts | 103.15 kB ( |
| std_subgroupAny.ts | 103.15 kB ( |
| std_subgroupMax.ts | 103.15 kB ( |
| std_subgroupMin.ts | 103.15 kB ( |
| std_subgroupMul.ts | 103.15 kB ( |
| std_subgroupXor.ts | 103.15 kB ( |
| std_subgroupOr.ts | 103.15 kB ( |
| d_formatToWGSLType.ts | 87.42 kB ( |
| d_uint8.ts | 87.41 kB ( |
| d_unorm10_10_10_2.ts | 87.42 kB ( |
| d_unorm8x4_bgra.ts | 87.42 kB ( |
| d_float16x2.ts | 87.41 kB ( |
| d_float16x4.ts | 87.41 kB ( |
| d_float32x2.ts | 87.41 kB ( |
| d_float32x3.ts | 87.41 kB ( |
| d_float32x4.ts | 87.41 kB ( |
| d_snorm16x2.ts | 87.41 kB ( |
| d_snorm16x4.ts | 87.41 kB ( |
| d_unorm16x2.ts | 87.41 kB ( |
| d_unorm16x4.ts | 87.41 kB ( |
| d_sint16x2.ts | 87.41 kB ( |
| d_sint16x4.ts | 87.41 kB ( |
| d_sint32x2.ts | 87.41 kB ( |
| d_sint32x3.ts | 87.41 kB ( |
| d_sint32x4.ts | 87.41 kB ( |
| d_snorm8x2.ts | 87.41 kB ( |
| d_snorm8x4.ts | 87.41 kB ( |
| d_uint16x2.ts | 87.41 kB ( |
| d_uint16x4.ts | 87.41 kB ( |
| d_uint32x2.ts | 87.41 kB ( |
| d_uint32x3.ts | 87.41 kB ( |
| d_uint32x4.ts | 87.41 kB ( |
| d_unorm8x2.ts | 87.41 kB ( |
| d_unorm8x4.ts | 87.41 kB ( |
| d_float16.ts | 87.41 kB ( |
| d_float32.ts | 87.41 kB ( |
| d_sint8x2.ts | 87.41 kB ( |
| d_sint8x4.ts | 87.41 kB ( |
| d_snorm16.ts | 87.41 kB ( |
| d_uint8x2.ts | 87.41 kB ( |
| d_uint8x4.ts | 87.41 kB ( |
| d_unorm16.ts | 87.41 kB ( |
| d_sint16.ts | 87.41 kB ( |
| d_sint32.ts | 87.41 kB ( |
| d_snorm8.ts | 87.41 kB ( |
| d_uint16.ts | 87.41 kB ( |
| d_uint32.ts | 87.41 kB ( |
| d_unorm8.ts | 87.41 kB ( |
| d_sint8.ts | 87.41 kB ( |
| d_packedFormats.ts | 87.42 kB ( |
| d_isPackedData.ts | 87.42 kB ( |
| std_textureDimensions.ts | 103.16 kB ( |
| std_textureGather.ts | 103.15 kB ( |
| std_textureSampleBaseClampToEdge.ts | 103.17 kB ( |
| std_textureSampleCompareLevel.ts | 103.16 kB ( |
| std_textureSampleCompare.ts | 103.16 kB ( |
| std_textureSampleLevel.ts | 103.16 kB ( |
| std_textureSampleBias.ts | 103.16 kB ( |
| std_textureSampleGrad.ts | 103.16 kB ( |
| std_textureSample.ts | 103.15 kB ( |
| std_textureStore.ts | 103.15 kB ( |
| std_textureLoad.ts | 103.15 kB ( |
| d_alignmentOf.ts | 87.42 kB ( |
| std_translation4.ts | 103.15 kB ( |
| std_rotationX4.ts | 103.15 kB ( |
| std_rotationY4.ts | 103.15 kB ( |
| std_rotationZ4.ts | 103.15 kB ( |
| std_identity2.ts | 103.15 kB ( |
| std_identity3.ts | 103.15 kB ( |
| std_identity4.ts | 103.15 kB ( |
| std_scaling4.ts | 103.15 kB ( |
| d_isBuiltin.ts | 87.41 kB ( |
| d_sizeOf.ts | 87.41 kB ( |
| d_isContiguous.ts | 87.42 kB ( |
| d_getLongestContiguousPrefix.ts | 87.43 kB ( |
| d_arrayOf.ts | 87.41 kB ( |
| d_size.ts | 87.41 kB ( |
| d_align.ts | 87.41 kB ( |
| d_location.ts | 87.41 kB ( |
| d_interpolate.ts | 87.42 kB ( |
| d_invariant.ts | 87.41 kB ( |
| d_mat4x4f.ts | 87.41 kB ( |
| d_mat2x2f.ts | 87.41 kB ( |
| d_mat3x3f.ts | 87.41 kB ( |
| d_matToArray.ts | 87.41 kB ( |
| d_builtin.ts | 87.41 kB ( |
| std_unpack2x16float.ts | 103.15 kB ( |
| std_unpack4x8unorm.ts | 103.15 kB ( |
| std_pack2x16float.ts | 103.15 kB ( |
| std_pack4x8unorm.ts | 103.15 kB ( |
| std_bitcastU32toF32.ts | 103.15 kB ( |
| std_bitcastU32toI32.ts | 103.15 kB ( |
| std_neg.ts | 103.14 kB ( |
| std_bitShiftRight.ts | 103.15 kB ( |
| std_bitShiftLeft.ts | 103.15 kB ( |
| std_add.ts | 103.14 kB ( |
| std_div.ts | 103.14 kB ( |
| std_mod.ts | 103.14 kB ( |
| std_mul.ts | 103.14 kB ( |
| std_sub.ts | 103.14 kB ( |
| std_translate4.ts | 103.15 kB ( |
| std_rotateX4.ts | 103.15 kB ( |
| std_scale4.ts | 103.15 kB ( |
| std_rotateY4.ts | 103.15 kB ( |
| std_rotateZ4.ts | 103.15 kB ( |
| d_memoryLayoutOf.ts | 87.42 kB ( |
| std_and.ts | 103.14 kB ( |
| std_or.ts | 103.14 kB ( |
| std_select.ts | 103.15 kB ( |
| std_allEq.ts | 103.14 kB ( |
| std_all.ts | 103.14 kB ( |
| std_not.ts | 103.14 kB ( |
| std_eq.ts | 103.14 kB ( |
| std_lt.ts | 103.14 kB ( |
| std_ne.ts | 103.14 kB ( |
| std_isCloseTo.ts | 103.15 kB ( |
| std_any.ts | 103.14 kB ( |
| std_ge.ts | 103.14 kB ( |
| std_gt.ts | 103.14 kB ( |
| std_le.ts | 103.14 kB ( |
| std_dot4U8Packed.ts | 103.15 kB ( |
| std_length.ts | 103.15 kB ( |
| std_countTrailingZeros.ts | 103.16 kB ( |
| std_distance.ts | 103.15 kB ( |
| std_dot.ts | 103.14 kB ( |
| std_countLeadingZeros.ts | 103.16 kB ( |
| std_firstTrailingBit.ts | 103.16 kB ( |
| std_firstLeadingBit.ts | 103.15 kB ( |
| std_fract.ts | 103.14 kB ( |
| std_frexp.ts | 103.14 kB ( |
| std_modf.ts | 103.14 kB ( |
| std_quantizeToF16.ts | 103.15 kB ( |
| std_mix.ts | 103.14 kB ( |
| std_countOneBits.ts | 103.15 kB ( |
| std_dot4I8Packed.ts | 103.15 kB ( |
| std_determinant.ts | 103.15 kB ( |
| std_extractBits.ts | 103.15 kB ( |
| std_faceForward.ts | 103.15 kB ( |
| std_inverseSqrt.ts | 103.15 kB ( |
| std_reverseBits.ts | 103.15 kB ( |
| std_insertBits.ts | 103.15 kB ( |
| std_smoothstep.ts | 103.15 kB ( |
| std_normalize.ts | 103.15 kB ( |
| std_transpose.ts | 103.15 kB ( |
| std_saturate.ts | 103.15 kB ( |
| std_degrees.ts | 103.15 kB ( |
| std_radians.ts | 103.15 kB ( |
| std_reflect.ts | 103.15 kB ( |
| std_refract.ts | 103.15 kB ( |
| std_acosh.ts | 103.14 kB ( |
| std_asinh.ts | 103.14 kB ( |
| std_atan2.ts | 103.14 kB ( |
| std_atanh.ts | 103.14 kB ( |
| std_clamp.ts | 103.14 kB ( |
| std_cross.ts | 103.14 kB ( |
| std_floor.ts | 103.14 kB ( |
| std_ldexp.ts | 103.14 kB ( |
| std_round.ts | 103.14 kB ( |
| std_trunc.ts | 103.14 kB ( |
| std_acos.ts | 103.14 kB ( |
| std_asin.ts | 103.14 kB ( |
| std_atan.ts | 103.14 kB ( |
| std_ceil.ts | 103.14 kB ( |
| std_cosh.ts | 103.14 kB ( |
| std_exp2.ts | 103.14 kB ( |
| std_log2.ts | 103.14 kB ( |
| std_sign.ts | 103.14 kB ( |
| std_sinh.ts | 103.14 kB ( |
| std_sqrt.ts | 103.14 kB ( |
| std_step.ts | 103.14 kB ( |
| std_tanh.ts | 103.14 kB ( |
| std_abs.ts | 103.14 kB ( |
| std_cos.ts | 103.14 kB ( |
| std_exp.ts | 103.14 kB ( |
| std_fma.ts | 103.14 kB ( |
| std_log.ts | 103.14 kB ( |
| std_max.ts | 103.14 kB ( |
| std_min.ts | 103.14 kB ( |
| std_pow.ts | 103.14 kB ( |
| std_sin.ts | 103.14 kB ( |
| std_tan.ts | 103.14 kB ( |
| common_fullScreenTriangle.ts | 57.18 kB ( |
| common_writeSoA.ts | 57.17 kB ( |
| STATIC_allImports.ts | 285.34 kB ( |
| STATIC_d.ts | 87.40 kB ( |
| STATIC_std.ts | 103.14 kB ( |
If you wish to run a comparison for other, slower bundlers, run the 'Tree-shake test' from the GitHub Actions menu.
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 [0.92, 1.92, 4.50, 6.12, 7.54, 10.78, 22.12, 23.39]
line [0.87, 1.84, 4.04, 6.34, 7.80, 11.19, 23.12, 24.80]
line [0.93, 1.87, 3.93, 6.92, 7.34, 10.87, 21.66, 24.15]
---
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.35, 0.58, 0.72, 0.89, 1.12, 1.27, 1.46, 1.61]
line [0.37, 0.53, 0.68, 0.82, 1.08, 1.21, 1.43, 1.50]
line [0.29, 0.57, 0.73, 0.86, 1.14, 1.23, 1.37, 1.61]
---
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.91, 2.00, 4.33, 6.55, 12.80, 26.52, 55.46, 112.44]
line [0.85, 2.19, 3.62, 7.68, 13.36, 27.74, 56.36, 115.06]
line [1.02, 2.14, 4.31, 6.79, 12.84, 25.85, 54.49, 112.19]
|
There was a problem hiding this comment.
Pull request overview
Removes deprecated pipeline builder APIs (withVertex/withFragment/withCompute) and legacy texture layout entry support, consolidating pipeline creation around root.createRenderPipeline(...) / root.createComputePipeline(...) and the modern texture schema-based bind group layout entries.
Changes:
- Migrated tests from the builder-style pipeline API to
createRenderPipeline/createComputePipeline. - Removed legacy texture layout entry types + overloads from
bindGroupLayout, along with related exports. - Simplified root type surface by removing deprecated builder-related types and implementation classes.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/typegpu/tests/tgsl/consoleLog.test.ts | Updates render pipeline creation to root.createRenderPipeline(...). |
| packages/typegpu/tests/texture.test.ts | Updates render pipeline helper to use root.createRenderPipeline(...). |
| packages/typegpu/tests/renderPipeline.test.ts | Refactors render pipeline tests to the new descriptor-based API and removes legacy builder-focused test blocks. |
| packages/typegpu/tests/pipeline-resolution.test.ts | Updates pipeline resolution tests to use createRenderPipeline / createComputePipeline. |
| packages/typegpu/tests/internal/renderPipeline.test.ts | Updates internal timing/performance callback tests to the new render pipeline creation API. |
| packages/typegpu/tests/bindGroupLayout.test.ts | Removes tests for the legacy texture layout entry syntax. |
| packages/typegpu/src/tgpuBindGroupLayout.ts | Removes legacy texture entry types/conversion and deprecated overloads from bindGroupLayout. |
| packages/typegpu/src/indexNamedExports.ts | Stops exporting deprecated builder-related types. |
| packages/typegpu/src/core/root/rootTypes.ts | Removes deprecated builder-type definitions and references; updates docs/examples accordingly. |
| packages/typegpu/src/core/root/init.ts | Removes deprecated builder implementations (WithComputeImpl / WithVertexImpl / WithFragmentImpl) and keeps descriptor-based pipeline creation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| export function bindGroupLayout<Entries extends Record<string, TgpuLayoutEntry | null>>( | ||
| entries: Entries, | ||
| ): TgpuBindGroupLayout<Prettify<Entries>>; | ||
| /** | ||
| * @deprecated Layouts containing the legacy texture api entries are deprecated and will be removed in future versions. Please use the up-to-date texture api entries instead. | ||
| */ | ||
| export function bindGroupLayout<Entries extends Record<string, TgpuLegacyLayoutEntry | null>>( | ||
| entries: Entries, | ||
| ): TgpuBindGroupLayout<Prettify<MapLegacyTextureToUpToDate<Entries>>>; | ||
| export function bindGroupLayout< | ||
| Entries extends Record<string, TgpuLayoutEntry | TgpuLegacyLayoutEntry | null>, | ||
| >(entries: Entries): MapLegacyTextureToUpToDate<Entries> { | ||
| const convertedEntries = convertLegacyEntries(entries); | ||
| return new TgpuBindGroupLayoutImpl(convertedEntries) as MapLegacyTextureToUpToDate<Entries>; | ||
| ): TgpuBindGroupLayout<Prettify<Entries>> { | ||
| return new TgpuBindGroupLayoutImpl(entries as Prettify<Entries>); | ||
| } |
There was a problem hiding this comment.
Maybe a nice catch? Doubt it will ever come up but I will keep it consistent, sure
fd2aa67 to
4307e55
Compare
There was a problem hiding this comment.
Important
The mend follow-up cleans up the test suite, but the three sibling surfaces flagged in the previous review still reference the removed APIs.
Reviewed changes — the latest force-push kept the core removal and added a mend commit that prunes redundant render-pipeline tests.
- Removed
withVertex(...)/withFragment(...)/withCompute(...)builder implementations andWith*,ValidateFragmentIntypes frominit.tsandrootTypes.ts. - Dropped legacy texture layout entry types and
convertLegacyEntriesfromtgpuBindGroupLayout.ts. - Migrated pipeline tests to
createRenderPipeline/createComputePipeline. - Pruned duplicate/outdated coverage in
renderPipeline.test.tsand folded equivalent behavior into the remainingrender pipeline behaviorandroot.createRenderPipelinesuites.
⚠️ WebGL fallback still advertises removed builder methods
packages/typegpu-gl/src/tgpuRootWebGL.ts:589-597 still defines withVertex/withCompute stubs for methods that no longer exist on TgpuRoot/ExperimentalTgpuRoot. Keeping them advertises a removed API surface.
Technical details
# WebGL fallback still advertises removed builder methods
## Affected sites
- `packages/typegpu-gl/src/tgpuRootWebGL.ts:589` — `withVertex` stub
- `packages/typegpu-gl/src/tgpuRootWebGL.ts:593` — `withCompute` stub
## Required outcome
- Remove the `withVertex` and `withCompute` methods from `TgpuRootWebGL`.
- Keep the `TgpuVertexFn` and `TgpuFragmentFn` imports, which are still used by `createRenderPipeline`.
## Suggested approach
Delete the two stubs and update or remove any tests that assert on these method names.⚠️ triangle-to-boids tutorial still documents removed pipeline builder API
The snippet at apps/typegpu-docs/src/content/docs/tutorials/triangle-to-boids/index.mdx:148-153 still calls root.withVertex(...).withFragment(...).createPipeline(...). This example will not work against the API after this PR.
Technical details
# triangle-to-boids tutorial still documents removed pipeline builder API
## Affected sites
- `apps/typegpu-docs/src/content/docs/tutorials/triangle-to-boids/index.mdx:148-153`
## Required outcome
- Update the tutorial snippet to use `root.createRenderPipeline`.
## Suggested approach
```ts
const renderPipeline = root.createRenderPipeline({
vertex: vertexMain,
fragment: fragmentMain,
targets: { format: presentationFormat },
});
```⚠️ tgpu-gen still emits removed legacy texture layout entries
packages/tgpu-gen/gen.mjs generates texture: 'float', storageTexture: 'rgba8unorm', and externalTexture: {} entries that tgpu.bindGroupLayout no longer accepts. The generator tests pass because they assert emitted strings, but users will receive runtime/type errors if they consume this output.
Technical details
# tgpu-gen still emits removed legacy texture layout entries
## Affected sites
- `packages/tgpu-gen/gen.mjs:361-426` — `generateStorageTextureVariable`, `generateTextureVariable`, `generateExternalTextureVariable` emit legacy string entries
- `packages/tgpu-gen/tests/bindGroupLayouts.test.ts:64-147` — tests assert the legacy strings
## Required outcome
- Update the generator to emit modern texture layout schema objects (`WgslTexture`, `WgslStorageTexture`, `WgslExternalTexture`).
- Update the tests to assert the new output.
## Suggested approach
- For texture entries, generate schemas like `d.texture2d(d.f32)`, `d.texture_depth_2d`, etc.
- For storage textures, generate schemas like `d.storageTexture2d('rgba8unorm', 'write-only')`.
- For external textures, generate a proper `WgslExternalTexture` object (e.g. `d.textureExternal()`) rather than `{}`.
## Open questions for the human
- Should `tgpu-gen` migrate to the `d.*` schema helpers in this PR, or is a follow-up PR acceptable?
- Is the generated output expected to remain runtime-usable, or is `tgpu-gen` an internal-only tool whose tests can be updated independently?Kimi K2 (free via Pullfrog for OSS) | 𝕏
|
I would argue none of Mr. Frog comments apply, triangle to boids is not maintained, GL never actually used those APIs (it can remove them in a separate pr) and tgpu-gen is kinda abandoned |
There was a problem hiding this comment.
ℹ️ No new issues in this delta.
Reviewed changes — the latest force-push adds a defensive copy in tgpu.bindGroupLayout so the implementation no longer keeps the exact caller-supplied entries reference.
- Defensive copy in
bindGroupLayout— changed the implementation to pass{ ...entries }intoTgpuBindGroupLayoutImpl, restoring the isolation the previous implementation had before the legacy-conversion removal.
Kimi K2 (free via Pullfrog for OSS) | 𝕏

No description provided.