fix: Inter struct casts#2451
Conversation
|
pkg.pr.new packages benchmark commit |
📊 Bundle Size Comparison
👀 Notable resultsStatic test results:
Dynamic test results:
|
| Test | tsdown |
|---|---|
| bool from typegpudata.ts | 12.52 kB ( |
| f16 from typegpudata.ts | 12.52 kB ( |
| f32 from typegpudata.ts | 12.52 kB ( |
| i32 from typegpudata.ts | 12.52 kB ( |
| u32 from typegpudata.ts | 12.52 kB ( |
| u16 from typegpudata.ts | 12.54 kB ( |
| textureDepth2d from typegpudata.ts | 12.96 kB ( |
| textureDepthCube from typegpudata.ts | 12.97 kB ( |
| texture1d from typegpudata.ts | 12.97 kB ( |
| texture2d from typegpudata.ts | 12.97 kB ( |
| texture3d from typegpudata.ts | 12.97 kB ( |
| textureCube from typegpudata.ts | 12.98 kB ( |
| textureDepth2dArray from typegpudata.ts | 12.98 kB ( |
| textureDepthCubeArray from typegpudata.ts | 12.99 kB ( |
| textureDepthMultisampled2d from typegpudata.ts | 12.99 kB ( |
| texture2dArray from typegpudata.ts | 12.99 kB ( |
| textureCubeArray from typegpudata.ts | 13.00 kB ( |
| textureMultisampled2d from typegpudata.ts | 13.00 kB ( |
| discard from typegpustd.ts | 13.73 kB ( |
| copy from typegpustd.ts | 13.97 kB ( |
| arrayLength from typegpustd.ts | 13.98 kB ( |
| isBeingTranspiled from typegpustd.ts | 14.01 kB ( |
| getTargetShaderLanguage from typegpustd.ts | 14.08 kB ( |
| extensionEnabled from typegpustd.ts | 14.13 kB ( |
| range from typegpustd.ts | 14.40 kB ( |
| disarrayOf from typegpudata.ts | 14.56 kB ( |
| dpdx from typegpustd.ts | 14.58 kB ( |
| dpdxCoarse from typegpustd.ts | 14.58 kB ( |
| dpdxFine from typegpustd.ts | 14.58 kB ( |
| dpdyCoarse from typegpustd.ts | 14.58 kB ( |
| dpdyFine from typegpustd.ts | 14.58 kB ( |
| dpdy from typegpustd.ts | 14.58 kB ( |
| fwidthCoarse from typegpustd.ts | 14.58 kB ( |
| fwidthFine from typegpustd.ts | 14.58 kB ( |
| fwidth from typegpustd.ts | 14.58 kB ( |
| atomicLoad from typegpustd.ts | 15.33 kB ( |
| atomicStore from typegpustd.ts | 15.34 kB ( |
| textureBarrier from typegpustd.ts | 15.34 kB ( |
| atomicAdd from typegpustd.ts | 15.34 kB ( |
| atomicAnd from typegpustd.ts | 15.34 kB ( |
| atomicMax from typegpustd.ts | 15.34 kB ( |
| atomicMin from typegpustd.ts | 15.34 kB ( |
| atomicOr from typegpustd.ts | 15.34 kB ( |
| atomicSub from typegpustd.ts | 15.34 kB ( |
| atomicXor from typegpustd.ts | 15.34 kB ( |
| storageBarrier from typegpustd.ts | 15.34 kB ( |
| workgroupBarrier from typegpustd.ts | 15.34 kB ( |
| vec2b from typegpudata.ts | 18.95 kB ( |
| vec2f from typegpudata.ts | 18.95 kB ( |
| vec2h from typegpudata.ts | 18.95 kB ( |
| vec2i from typegpudata.ts | 18.95 kB ( |
| vec2u from typegpudata.ts | 18.95 kB ( |
| vec3b from typegpudata.ts | 18.95 kB ( |
| vec3f from typegpudata.ts | 18.95 kB ( |
| vec3h from typegpudata.ts | 18.95 kB ( |
| vec3i from typegpudata.ts | 18.95 kB ( |
| vec3u from typegpudata.ts | 18.95 kB ( |
| vec4b from typegpudata.ts | 18.95 kB ( |
| vec4f from typegpudata.ts | 18.95 kB ( |
| vec4h from typegpudata.ts | 18.95 kB ( |
| vec4i from typegpudata.ts | 18.95 kB ( |
| vec4u from typegpudata.ts | 18.95 kB ( |
| formatToWGSLType from typegpudata.ts | 20.44 kB ( |
| uint8 from typegpudata.ts | 20.44 kB ( |
| float16 from typegpudata.ts | 20.45 kB ( |
| float16x2 from typegpudata.ts | 20.45 kB ( |
| float16x4 from typegpudata.ts | 20.45 kB ( |
| float32 from typegpudata.ts | 20.45 kB ( |
| float32x2 from typegpudata.ts | 20.45 kB ( |
| float32x3 from typegpudata.ts | 20.45 kB ( |
| float32x4 from typegpudata.ts | 20.45 kB ( |
| sint16 from typegpudata.ts | 20.45 kB ( |
| sint16x2 from typegpudata.ts | 20.45 kB ( |
| sint16x4 from typegpudata.ts | 20.45 kB ( |
| sint32 from typegpudata.ts | 20.45 kB ( |
| sint32x2 from typegpudata.ts | 20.45 kB ( |
| sint32x3 from typegpudata.ts | 20.45 kB ( |
| sint32x4 from typegpudata.ts | 20.45 kB ( |
| sint8 from typegpudata.ts | 20.45 kB ( |
| sint8x2 from typegpudata.ts | 20.45 kB ( |
| sint8x4 from typegpudata.ts | 20.45 kB ( |
| snorm16 from typegpudata.ts | 20.45 kB ( |
| snorm16x2 from typegpudata.ts | 20.45 kB ( |
| snorm16x4 from typegpudata.ts | 20.45 kB ( |
| snorm8 from typegpudata.ts | 20.45 kB ( |
| snorm8x2 from typegpudata.ts | 20.45 kB ( |
| snorm8x4 from typegpudata.ts | 20.45 kB ( |
| uint16 from typegpudata.ts | 20.45 kB ( |
| uint16x2 from typegpudata.ts | 20.45 kB ( |
| uint16x4 from typegpudata.ts | 20.45 kB ( |
| uint32 from typegpudata.ts | 20.45 kB ( |
| uint32x2 from typegpudata.ts | 20.45 kB ( |
| uint32x3 from typegpudata.ts | 20.45 kB ( |
| uint32x4 from typegpudata.ts | 20.45 kB ( |
| uint8x2 from typegpudata.ts | 20.45 kB ( |
| uint8x4 from typegpudata.ts | 20.45 kB ( |
| unorm10 10 10 2 from typegpudata.ts | 20.45 kB ( |
| unorm16 from typegpudata.ts | 20.45 kB ( |
| unorm16x2 from typegpudata.ts | 20.45 kB ( |
| unorm16x4 from typegpudata.ts | 20.45 kB ( |
| unorm8 from typegpudata.ts | 20.45 kB ( |
| unorm8x2 from typegpudata.ts | 20.45 kB ( |
| unorm8x4 bgra from typegpudata.ts | 20.45 kB ( |
| unorm8x4 from typegpudata.ts | 20.45 kB ( |
| packedFormats from typegpudata.ts | 20.47 kB ( |
| isPackedData from typegpudata.ts | 20.51 kB ( |
| subgroupAdd from typegpustd.ts | 23.52 kB ( |
| subgroupAll from typegpustd.ts | 23.53 kB ( |
| subgroupAnd from typegpustd.ts | 23.53 kB ( |
| subgroupAny from typegpustd.ts | 23.53 kB ( |
| subgroupBallot from typegpustd.ts | 23.53 kB ( |
| subgroupBroadcastFirst from typegpustd.ts | 23.53 kB ( |
| subgroupBroadcast from typegpustd.ts | 23.53 kB ( |
| subgroupElect from typegpustd.ts | 23.53 kB ( |
| subgroupExclusiveAdd from typegpustd.ts | 23.53 kB ( |
| subgroupExclusiveMul from typegpustd.ts | 23.53 kB ( |
| subgroupInclusiveAdd from typegpustd.ts | 23.53 kB ( |
| subgroupInclusiveMul from typegpustd.ts | 23.53 kB ( |
| subgroupMax from typegpustd.ts | 23.53 kB ( |
| subgroupMin from typegpustd.ts | 23.53 kB ( |
| subgroupMul from typegpustd.ts | 23.53 kB ( |
| subgroupOr from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleDown from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleUp from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleXor from typegpustd.ts | 23.53 kB ( |
| subgroupShuffle from typegpustd.ts | 23.53 kB ( |
| subgroupXor from typegpustd.ts | 23.53 kB ( |
| alignmentOf from typegpudata.ts | 21.39 kB ( |
| textureDimensions from typegpustd.ts | 25.28 kB ( |
| textureGather from typegpustd.ts | 25.28 kB ( |
| textureLoad from typegpustd.ts | 25.29 kB ( |
| textureSampleBaseClampToEdge from typegpustd.ts | 25.29 kB ( |
| textureSampleBias from typegpustd.ts | 25.29 kB ( |
| textureSampleCompareLevel from typegpustd.ts | 25.29 kB ( |
| textureSampleCompare from typegpustd.ts | 25.29 kB ( |
| textureSampleGrad from typegpustd.ts | 25.29 kB ( |
| textureSampleLevel from typegpustd.ts | 25.29 kB ( |
| textureSample from typegpustd.ts | 25.29 kB ( |
| textureStore from typegpustd.ts | 25.29 kB ( |
| mat4x4f from typegpudata.ts | 26.53 kB ( |
| identity2 from typegpustd.ts | 26.53 kB ( |
| identity3 from typegpustd.ts | 26.53 kB ( |
| identity4 from typegpustd.ts | 26.53 kB ( |
| mat2x2f from typegpudata.ts | 26.53 kB ( |
| mat3x3f from typegpudata.ts | 26.53 kB ( |
| rotationX4 from typegpustd.ts | 26.53 kB ( |
| rotationY4 from typegpustd.ts | 26.53 kB ( |
| rotationZ4 from typegpustd.ts | 26.53 kB ( |
| scaling4 from typegpustd.ts | 26.53 kB ( |
| translation4 from typegpustd.ts | 26.53 kB ( |
| matToArray from typegpudata.ts | 26.67 kB ( |
| isBuiltin from typegpudata.ts | 24.12 kB ( |
| sizeOf from typegpudata.ts | 24.17 kB ( |
| isContiguous from typegpudata.ts | 24.17 kB ( |
| getLongestContiguousPrefix from typegpudata.ts | 24.18 kB ( |
| arrayOf from typegpudata.ts | 25.71 kB ( |
| size from typegpudata.ts | 25.85 kB ( |
| align from typegpudata.ts | 25.85 kB ( |
| location from typegpudata.ts | 25.86 kB ( |
| interpolate from typegpudata.ts | 25.86 kB ( |
| invariant from typegpudata.ts | 26.23 kB ( |
| builtin from typegpudata.ts | 28.18 kB ( |
| pack2x16float from typegpustd.ts | 35.49 kB ( |
| pack4x8unorm from typegpustd.ts | 35.49 kB ( |
| unpack2x16float from typegpustd.ts | 35.49 kB ( |
| unpack4x8unorm from typegpustd.ts | 35.49 kB ( |
| bitcastU32toF32 from typegpustd.ts | 43.73 kB ( |
| bitcastU32toI32 from typegpustd.ts | 43.74 kB ( |
| memoryLayoutOf from typegpudata.ts | 41.49 kB ( |
| neg from typegpustd.ts | 47.90 kB ( |
| add from typegpustd.ts | 47.91 kB ( |
| bitShiftLeft from typegpustd.ts | 47.91 kB ( |
| bitShiftRight from typegpustd.ts | 47.91 kB ( |
| div from typegpustd.ts | 47.91 kB ( |
| mod from typegpustd.ts | 47.91 kB ( |
| mul from typegpustd.ts | 47.91 kB ( |
| sub from typegpustd.ts | 47.91 kB ( |
| rotateX4 from typegpustd.ts | 48.67 kB ( |
| scale4 from typegpustd.ts | 48.67 kB ( |
| translate4 from typegpustd.ts | 48.67 kB ( |
| rotateY4 from typegpustd.ts | 48.67 kB ( |
| rotateZ4 from typegpustd.ts | 48.67 kB ( |
| and from typegpustd.ts | 51.28 kB ( |
| or from typegpustd.ts | 51.28 kB ( |
| allEq from typegpustd.ts | 51.28 kB ( |
| all from typegpustd.ts | 51.28 kB ( |
| eq from typegpustd.ts | 51.28 kB ( |
| lt from typegpustd.ts | 51.28 kB ( |
| ne from typegpustd.ts | 51.28 kB ( |
| not from typegpustd.ts | 51.28 kB ( |
| select from typegpustd.ts | 51.28 kB ( |
| any from typegpustd.ts | 51.29 kB ( |
| ge from typegpustd.ts | 51.29 kB ( |
| gt from typegpustd.ts | 51.29 kB ( |
| isCloseTo from typegpustd.ts | 51.29 kB ( |
| le from typegpustd.ts | 51.29 kB ( |
| writeToArrayBuffer from typegpu.ts | 50.43 kB ( |
| patchArrayBuffer from typegpu.ts | 50.63 kB ( |
| readFromArrayBuffer from typegpu.ts | 51.23 kB ( |
| common from typegpu.ts | 57.98 kB ( |
| dot from typegpustd.ts | 65.35 kB ( |
| length from typegpustd.ts | 65.35 kB ( |
| distance from typegpustd.ts | 65.36 kB ( |
| dot4U8Packed from typegpustd.ts | 65.36 kB ( |
| fract from typegpustd.ts | 65.36 kB ( |
| frexp from typegpustd.ts | 65.36 kB ( |
| mix from typegpustd.ts | 65.36 kB ( |
| modf from typegpustd.ts | 65.36 kB ( |
| abs from typegpustd.ts | 65.36 kB ( |
| acos from typegpustd.ts | 65.36 kB ( |
| acosh from typegpustd.ts | 65.36 kB ( |
| asin from typegpustd.ts | 65.36 kB ( |
| asinh from typegpustd.ts | 65.36 kB ( |
| atan2 from typegpustd.ts | 65.36 kB ( |
| atan from typegpustd.ts | 65.36 kB ( |
| atanh from typegpustd.ts | 65.36 kB ( |
| ceil from typegpustd.ts | 65.36 kB ( |
| clamp from typegpustd.ts | 65.36 kB ( |
| cos from typegpustd.ts | 65.36 kB ( |
| cosh from typegpustd.ts | 65.36 kB ( |
| countLeadingZeros from typegpustd.ts | 65.36 kB ( |
| countOneBits from typegpustd.ts | 65.36 kB ( |
| countTrailingZeros from typegpustd.ts | 65.36 kB ( |
| cross from typegpustd.ts | 65.36 kB ( |
| degrees from typegpustd.ts | 65.36 kB ( |
| determinant from typegpustd.ts | 65.36 kB ( |
| dot4I8Packed from typegpustd.ts | 65.36 kB ( |
| exp2 from typegpustd.ts | 65.36 kB ( |
| exp from typegpustd.ts | 65.36 kB ( |
| extractBits from typegpustd.ts | 65.36 kB ( |
| faceForward from typegpustd.ts | 65.36 kB ( |
| firstLeadingBit from typegpustd.ts | 65.36 kB ( |
| firstTrailingBit from typegpustd.ts | 65.36 kB ( |
| floor from typegpustd.ts | 65.36 kB ( |
| fma from typegpustd.ts | 65.36 kB ( |
| insertBits from typegpustd.ts | 65.36 kB ( |
| inverseSqrt from typegpustd.ts | 65.36 kB ( |
| ldexp from typegpustd.ts | 65.36 kB ( |
| log2 from typegpustd.ts | 65.36 kB ( |
| log from typegpustd.ts | 65.36 kB ( |
| max from typegpustd.ts | 65.36 kB ( |
| min from typegpustd.ts | 65.36 kB ( |
| normalize from typegpustd.ts | 65.36 kB ( |
| pow from typegpustd.ts | 65.36 kB ( |
| quantizeToF16 from typegpustd.ts | 65.36 kB ( |
| radians from typegpustd.ts | 65.36 kB ( |
| reflect from typegpustd.ts | 65.36 kB ( |
| refract from typegpustd.ts | 65.36 kB ( |
| reverseBits from typegpustd.ts | 65.36 kB ( |
| round from typegpustd.ts | 65.36 kB ( |
| saturate from typegpustd.ts | 65.36 kB ( |
| sign from typegpustd.ts | 65.36 kB ( |
| sin from typegpustd.ts | 65.36 kB ( |
| sinh from typegpustd.ts | 65.36 kB ( |
| smoothstep from typegpustd.ts | 65.36 kB ( |
| sqrt from typegpustd.ts | 65.36 kB ( |
| step from typegpustd.ts | 65.36 kB ( |
| tan from typegpustd.ts | 65.36 kB ( |
| tanh from typegpustd.ts | 65.36 kB ( |
| transpose from typegpustd.ts | 65.36 kB ( |
| trunc from typegpustd.ts | 65.36 kB ( |
| isUsableAsUniform from typegpu.ts | 62.47 kB ( |
| isTexture from typegpu.ts | 62.48 kB ( |
| isSampler from typegpu.ts | 62.49 kB ( |
| isComparisonSampler from typegpu.ts | 62.50 kB ( |
| isVariable from typegpu.ts | 64.19 kB ( |
| d from typegpu.ts | 86.71 kB ( |
| std from typegpu.ts | 102.44 kB ( |
| isUsableAsVertex from typegpu.ts | 88.04 kB ( |
| isBuffer from typegpu.ts | 88.05 kB ( |
| WgslGenerator from typegpu.ts | 113.71 kB ( |
📋 All results
Click to reveal the results table (355 entries).
| Test | tsdown |
|---|---|
| bool from typegpudata.ts | 12.52 kB ( |
| f16 from typegpudata.ts | 12.52 kB ( |
| f32 from typegpudata.ts | 12.52 kB ( |
| i32 from typegpudata.ts | 12.52 kB ( |
| u32 from typegpudata.ts | 12.52 kB ( |
| u16 from typegpudata.ts | 12.54 kB ( |
| textureDepth2d from typegpudata.ts | 12.96 kB ( |
| textureDepthCube from typegpudata.ts | 12.97 kB ( |
| texture1d from typegpudata.ts | 12.97 kB ( |
| texture2d from typegpudata.ts | 12.97 kB ( |
| texture3d from typegpudata.ts | 12.97 kB ( |
| textureCube from typegpudata.ts | 12.98 kB ( |
| textureDepth2dArray from typegpudata.ts | 12.98 kB ( |
| textureDepthCubeArray from typegpudata.ts | 12.99 kB ( |
| textureDepthMultisampled2d from typegpudata.ts | 12.99 kB ( |
| texture2dArray from typegpudata.ts | 12.99 kB ( |
| textureCubeArray from typegpudata.ts | 13.00 kB ( |
| textureMultisampled2d from typegpudata.ts | 13.00 kB ( |
| discard from typegpustd.ts | 13.73 kB ( |
| copy from typegpustd.ts | 13.97 kB ( |
| arrayLength from typegpustd.ts | 13.98 kB ( |
| isBeingTranspiled from typegpustd.ts | 14.01 kB ( |
| getTargetShaderLanguage from typegpustd.ts | 14.08 kB ( |
| extensionEnabled from typegpustd.ts | 14.13 kB ( |
| range from typegpustd.ts | 14.40 kB ( |
| disarrayOf from typegpudata.ts | 14.56 kB ( |
| dpdx from typegpustd.ts | 14.58 kB ( |
| dpdxCoarse from typegpustd.ts | 14.58 kB ( |
| dpdxFine from typegpustd.ts | 14.58 kB ( |
| dpdyCoarse from typegpustd.ts | 14.58 kB ( |
| dpdyFine from typegpustd.ts | 14.58 kB ( |
| dpdy from typegpustd.ts | 14.58 kB ( |
| fwidthCoarse from typegpustd.ts | 14.58 kB ( |
| fwidthFine from typegpustd.ts | 14.58 kB ( |
| fwidth from typegpustd.ts | 14.58 kB ( |
| atomicLoad from typegpustd.ts | 15.33 kB ( |
| atomicStore from typegpustd.ts | 15.34 kB ( |
| textureBarrier from typegpustd.ts | 15.34 kB ( |
| atomicAdd from typegpustd.ts | 15.34 kB ( |
| atomicAnd from typegpustd.ts | 15.34 kB ( |
| atomicMax from typegpustd.ts | 15.34 kB ( |
| atomicMin from typegpustd.ts | 15.34 kB ( |
| atomicOr from typegpustd.ts | 15.34 kB ( |
| atomicSub from typegpustd.ts | 15.34 kB ( |
| atomicXor from typegpustd.ts | 15.34 kB ( |
| storageBarrier from typegpustd.ts | 15.34 kB ( |
| workgroupBarrier from typegpustd.ts | 15.34 kB ( |
| vec2b from typegpudata.ts | 18.95 kB ( |
| vec2f from typegpudata.ts | 18.95 kB ( |
| vec2h from typegpudata.ts | 18.95 kB ( |
| vec2i from typegpudata.ts | 18.95 kB ( |
| vec2u from typegpudata.ts | 18.95 kB ( |
| vec3b from typegpudata.ts | 18.95 kB ( |
| vec3f from typegpudata.ts | 18.95 kB ( |
| vec3h from typegpudata.ts | 18.95 kB ( |
| vec3i from typegpudata.ts | 18.95 kB ( |
| vec3u from typegpudata.ts | 18.95 kB ( |
| vec4b from typegpudata.ts | 18.95 kB ( |
| vec4f from typegpudata.ts | 18.95 kB ( |
| vec4h from typegpudata.ts | 18.95 kB ( |
| vec4i from typegpudata.ts | 18.95 kB ( |
| vec4u from typegpudata.ts | 18.95 kB ( |
| formatToWGSLType from typegpudata.ts | 20.44 kB ( |
| uint8 from typegpudata.ts | 20.44 kB ( |
| float16 from typegpudata.ts | 20.45 kB ( |
| float16x2 from typegpudata.ts | 20.45 kB ( |
| float16x4 from typegpudata.ts | 20.45 kB ( |
| float32 from typegpudata.ts | 20.45 kB ( |
| float32x2 from typegpudata.ts | 20.45 kB ( |
| float32x3 from typegpudata.ts | 20.45 kB ( |
| float32x4 from typegpudata.ts | 20.45 kB ( |
| sint16 from typegpudata.ts | 20.45 kB ( |
| sint16x2 from typegpudata.ts | 20.45 kB ( |
| sint16x4 from typegpudata.ts | 20.45 kB ( |
| sint32 from typegpudata.ts | 20.45 kB ( |
| sint32x2 from typegpudata.ts | 20.45 kB ( |
| sint32x3 from typegpudata.ts | 20.45 kB ( |
| sint32x4 from typegpudata.ts | 20.45 kB ( |
| sint8 from typegpudata.ts | 20.45 kB ( |
| sint8x2 from typegpudata.ts | 20.45 kB ( |
| sint8x4 from typegpudata.ts | 20.45 kB ( |
| snorm16 from typegpudata.ts | 20.45 kB ( |
| snorm16x2 from typegpudata.ts | 20.45 kB ( |
| snorm16x4 from typegpudata.ts | 20.45 kB ( |
| snorm8 from typegpudata.ts | 20.45 kB ( |
| snorm8x2 from typegpudata.ts | 20.45 kB ( |
| snorm8x4 from typegpudata.ts | 20.45 kB ( |
| uint16 from typegpudata.ts | 20.45 kB ( |
| uint16x2 from typegpudata.ts | 20.45 kB ( |
| uint16x4 from typegpudata.ts | 20.45 kB ( |
| uint32 from typegpudata.ts | 20.45 kB ( |
| uint32x2 from typegpudata.ts | 20.45 kB ( |
| uint32x3 from typegpudata.ts | 20.45 kB ( |
| uint32x4 from typegpudata.ts | 20.45 kB ( |
| uint8x2 from typegpudata.ts | 20.45 kB ( |
| uint8x4 from typegpudata.ts | 20.45 kB ( |
| unorm10 10 10 2 from typegpudata.ts | 20.45 kB ( |
| unorm16 from typegpudata.ts | 20.45 kB ( |
| unorm16x2 from typegpudata.ts | 20.45 kB ( |
| unorm16x4 from typegpudata.ts | 20.45 kB ( |
| unorm8 from typegpudata.ts | 20.45 kB ( |
| unorm8x2 from typegpudata.ts | 20.45 kB ( |
| unorm8x4 bgra from typegpudata.ts | 20.45 kB ( |
| unorm8x4 from typegpudata.ts | 20.45 kB ( |
| packedFormats from typegpudata.ts | 20.47 kB ( |
| isPackedData from typegpudata.ts | 20.51 kB ( |
| subgroupAdd from typegpustd.ts | 23.52 kB ( |
| subgroupAll from typegpustd.ts | 23.53 kB ( |
| subgroupAnd from typegpustd.ts | 23.53 kB ( |
| subgroupAny from typegpustd.ts | 23.53 kB ( |
| subgroupBallot from typegpustd.ts | 23.53 kB ( |
| subgroupBroadcastFirst from typegpustd.ts | 23.53 kB ( |
| subgroupBroadcast from typegpustd.ts | 23.53 kB ( |
| subgroupElect from typegpustd.ts | 23.53 kB ( |
| subgroupExclusiveAdd from typegpustd.ts | 23.53 kB ( |
| subgroupExclusiveMul from typegpustd.ts | 23.53 kB ( |
| subgroupInclusiveAdd from typegpustd.ts | 23.53 kB ( |
| subgroupInclusiveMul from typegpustd.ts | 23.53 kB ( |
| subgroupMax from typegpustd.ts | 23.53 kB ( |
| subgroupMin from typegpustd.ts | 23.53 kB ( |
| subgroupMul from typegpustd.ts | 23.53 kB ( |
| subgroupOr from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleDown from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleUp from typegpustd.ts | 23.53 kB ( |
| subgroupShuffleXor from typegpustd.ts | 23.53 kB ( |
| subgroupShuffle from typegpustd.ts | 23.53 kB ( |
| subgroupXor from typegpustd.ts | 23.53 kB ( |
| alignmentOf from typegpudata.ts | 21.39 kB ( |
| textureDimensions from typegpustd.ts | 25.28 kB ( |
| textureGather from typegpustd.ts | 25.28 kB ( |
| textureLoad from typegpustd.ts | 25.29 kB ( |
| textureSampleBaseClampToEdge from typegpustd.ts | 25.29 kB ( |
| textureSampleBias from typegpustd.ts | 25.29 kB ( |
| textureSampleCompareLevel from typegpustd.ts | 25.29 kB ( |
| textureSampleCompare from typegpustd.ts | 25.29 kB ( |
| textureSampleGrad from typegpustd.ts | 25.29 kB ( |
| textureSampleLevel from typegpustd.ts | 25.29 kB ( |
| textureSample from typegpustd.ts | 25.29 kB ( |
| textureStore from typegpustd.ts | 25.29 kB ( |
| mat4x4f from typegpudata.ts | 26.53 kB ( |
| identity2 from typegpustd.ts | 26.53 kB ( |
| identity3 from typegpustd.ts | 26.53 kB ( |
| identity4 from typegpustd.ts | 26.53 kB ( |
| mat2x2f from typegpudata.ts | 26.53 kB ( |
| mat3x3f from typegpudata.ts | 26.53 kB ( |
| rotationX4 from typegpustd.ts | 26.53 kB ( |
| rotationY4 from typegpustd.ts | 26.53 kB ( |
| rotationZ4 from typegpustd.ts | 26.53 kB ( |
| scaling4 from typegpustd.ts | 26.53 kB ( |
| translation4 from typegpustd.ts | 26.53 kB ( |
| matToArray from typegpudata.ts | 26.67 kB ( |
| isBuiltin from typegpudata.ts | 24.12 kB ( |
| dataImportOneDirect.ts | 24.17 kB ( |
| dataImportOneStar.ts | 24.17 kB ( |
| sizeOf from typegpudata.ts | 24.17 kB ( |
| isContiguous from typegpudata.ts | 24.17 kB ( |
| getLongestContiguousPrefix from typegpudata.ts | 24.18 kB ( |
| arrayOf from typegpudata.ts | 25.71 kB ( |
| size from typegpudata.ts | 25.85 kB ( |
| align from typegpudata.ts | 25.85 kB ( |
| location from typegpudata.ts | 25.86 kB ( |
| interpolate from typegpudata.ts | 25.86 kB ( |
| invariant from typegpudata.ts | 26.23 kB ( |
| builtin from typegpudata.ts | 28.18 kB ( |
| pack2x16float from typegpustd.ts | 35.49 kB ( |
| pack4x8unorm from typegpustd.ts | 35.49 kB ( |
| unpack2x16float from typegpustd.ts | 35.49 kB ( |
| unpack4x8unorm from typegpustd.ts | 35.49 kB ( |
| bitcastU32toF32 from typegpustd.ts | 43.73 kB ( |
| bitcastU32toI32 from typegpustd.ts | 43.74 kB ( |
| memoryLayoutOf from typegpudata.ts | 41.49 kB ( |
| neg from typegpustd.ts | 47.90 kB ( |
| add from typegpustd.ts | 47.91 kB ( |
| bitShiftLeft from typegpustd.ts | 47.91 kB ( |
| bitShiftRight from typegpustd.ts | 47.91 kB ( |
| div from typegpustd.ts | 47.91 kB ( |
| mod from typegpustd.ts | 47.91 kB ( |
| mul from typegpustd.ts | 47.91 kB ( |
| sub from typegpustd.ts | 47.91 kB ( |
| stdImportOneDirect.ts | 47.91 kB ( |
| stdImportOneStar.ts | 47.91 kB ( |
| rotateX4 from typegpustd.ts | 48.67 kB ( |
| scale4 from typegpustd.ts | 48.67 kB ( |
| translate4 from typegpustd.ts | 48.67 kB ( |
| rotateY4 from typegpustd.ts | 48.67 kB ( |
| rotateZ4 from typegpustd.ts | 48.67 kB ( |
| and from typegpustd.ts | 51.28 kB ( |
| or from typegpustd.ts | 51.28 kB ( |
| allEq from typegpustd.ts | 51.28 kB ( |
| all from typegpustd.ts | 51.28 kB ( |
| eq from typegpustd.ts | 51.28 kB ( |
| lt from typegpustd.ts | 51.28 kB ( |
| ne from typegpustd.ts | 51.28 kB ( |
| not from typegpustd.ts | 51.28 kB ( |
| select from typegpustd.ts | 51.28 kB ( |
| any from typegpustd.ts | 51.29 kB ( |
| ge from typegpustd.ts | 51.29 kB ( |
| gt from typegpustd.ts | 51.29 kB ( |
| isCloseTo from typegpustd.ts | 51.29 kB ( |
| le from typegpustd.ts | 51.29 kB ( |
| writeToArrayBuffer from typegpu.ts | 50.43 kB ( |
| patchArrayBuffer from typegpu.ts | 50.63 kB ( |
| readFromArrayBuffer from typegpu.ts | 51.23 kB ( |
| common from typegpu.ts | 57.98 kB ( |
| dot from typegpustd.ts | 65.35 kB ( |
| length from typegpustd.ts | 65.35 kB ( |
| distance from typegpustd.ts | 65.36 kB ( |
| dot4U8Packed from typegpustd.ts | 65.36 kB ( |
| fract from typegpustd.ts | 65.36 kB ( |
| frexp from typegpustd.ts | 65.36 kB ( |
| mix from typegpustd.ts | 65.36 kB ( |
| modf from typegpustd.ts | 65.36 kB ( |
| abs from typegpustd.ts | 65.36 kB ( |
| acos from typegpustd.ts | 65.36 kB ( |
| acosh from typegpustd.ts | 65.36 kB ( |
| asin from typegpustd.ts | 65.36 kB ( |
| asinh from typegpustd.ts | 65.36 kB ( |
| atan2 from typegpustd.ts | 65.36 kB ( |
| atan from typegpustd.ts | 65.36 kB ( |
| atanh from typegpustd.ts | 65.36 kB ( |
| ceil from typegpustd.ts | 65.36 kB ( |
| clamp from typegpustd.ts | 65.36 kB ( |
| cos from typegpustd.ts | 65.36 kB ( |
| cosh from typegpustd.ts | 65.36 kB ( |
| countLeadingZeros from typegpustd.ts | 65.36 kB ( |
| countOneBits from typegpustd.ts | 65.36 kB ( |
| countTrailingZeros from typegpustd.ts | 65.36 kB ( |
| cross from typegpustd.ts | 65.36 kB ( |
| degrees from typegpustd.ts | 65.36 kB ( |
| determinant from typegpustd.ts | 65.36 kB ( |
| dot4I8Packed from typegpustd.ts | 65.36 kB ( |
| exp2 from typegpustd.ts | 65.36 kB ( |
| exp from typegpustd.ts | 65.36 kB ( |
| extractBits from typegpustd.ts | 65.36 kB ( |
| faceForward from typegpustd.ts | 65.36 kB ( |
| firstLeadingBit from typegpustd.ts | 65.36 kB ( |
| firstTrailingBit from typegpustd.ts | 65.36 kB ( |
| floor from typegpustd.ts | 65.36 kB ( |
| fma from typegpustd.ts | 65.36 kB ( |
| insertBits from typegpustd.ts | 65.36 kB ( |
| inverseSqrt from typegpustd.ts | 65.36 kB ( |
| ldexp from typegpustd.ts | 65.36 kB ( |
| log2 from typegpustd.ts | 65.36 kB ( |
| log from typegpustd.ts | 65.36 kB ( |
| max from typegpustd.ts | 65.36 kB ( |
| min from typegpustd.ts | 65.36 kB ( |
| normalize from typegpustd.ts | 65.36 kB ( |
| pow from typegpustd.ts | 65.36 kB ( |
| quantizeToF16 from typegpustd.ts | 65.36 kB ( |
| radians from typegpustd.ts | 65.36 kB ( |
| reflect from typegpustd.ts | 65.36 kB ( |
| refract from typegpustd.ts | 65.36 kB ( |
| reverseBits from typegpustd.ts | 65.36 kB ( |
| round from typegpustd.ts | 65.36 kB ( |
| saturate from typegpustd.ts | 65.36 kB ( |
| sign from typegpustd.ts | 65.36 kB ( |
| sin from typegpustd.ts | 65.36 kB ( |
| sinh from typegpustd.ts | 65.36 kB ( |
| smoothstep from typegpustd.ts | 65.36 kB ( |
| sqrt from typegpustd.ts | 65.36 kB ( |
| step from typegpustd.ts | 65.36 kB ( |
| tan from typegpustd.ts | 65.36 kB ( |
| tanh from typegpustd.ts | 65.36 kB ( |
| transpose from typegpustd.ts | 65.36 kB ( |
| trunc from typegpustd.ts | 65.36 kB ( |
| isUsableAsUniform from typegpu.ts | 62.47 kB ( |
| isTexture from typegpu.ts | 62.48 kB ( |
| isSampler from typegpu.ts | 62.49 kB ( |
| isComparisonSampler from typegpu.ts | 62.50 kB ( |
| isVariable from typegpu.ts | 64.19 kB ( |
| d from typegpu.ts | 86.71 kB ( |
| dataImportEverything.ts | 89.03 kB ( |
| std from typegpu.ts | 102.44 kB ( |
| stdImportEverything.ts | 105.27 kB ( |
| isUsableAsVertex from typegpu.ts | 88.04 kB ( |
| isBuffer from typegpu.ts | 88.05 kB ( |
| WgslGenerator from typegpu.ts | 113.71 kB ( |
| tgpuImportEverything.ts | 260.16 kB ( |
| tgpu from typegpu.ts | 260.16 kB ( |
| tgpu.fn from typegpu.ts | 260.16 kB ( |
| tgpu.init from typegpu.ts | 260.17 kB ( |
| tgpu.lazy from typegpu.ts | 260.17 kB ( |
| tgpu.slot from typegpu.ts | 260.17 kB ( |
| tgpu.const from typegpu.ts | 260.17 kB ( |
| tgpu.unroll from typegpu.ts | 260.17 kB ( |
| tgpu.resolve from typegpu.ts | 260.17 kB ( |
| tgpu.accessor from typegpu.ts | 260.17 kB ( |
| tgpu.comptime from typegpu.ts | 260.17 kB ( |
| tgpu.vertexFn from typegpu.ts | 260.17 kB ( |
| tgpu.computeFn from typegpu.ts | 260.17 kB ( |
| tgpu.fragmentFn from typegpu.ts | 260.17 kB ( |
| tgpu.privateVar from typegpu.ts | 260.17 kB ( |
| tgpuImportOne.ts | 260.17 kB ( |
| tgpu.vertexLayout from typegpu.ts | 260.17 kB ( |
| tgpu.workgroupVar from typegpu.ts | 260.17 kB ( |
| tgpu.initFromDevice from typegpu.ts | 260.18 kB ( |
| tgpu.bindGroupLayout from typegpu.ts | 260.18 kB ( |
| tgpu.mutableAccessor from typegpu.ts | 260.18 kB ( |
| tgpu.resolveWithContext from typegpu.ts | 260.18 kB ( |
| importEntireLibrary.ts | 288.02 kB ( |
| functionWithUseGpu.ts | 282 B (➖) |
| functionWithoutUseGpu.ts | 24 B (➖) |
| MissingBindGroupsError from typegpu.ts | 1.35 kB (➖) |
| MissingSlotValueError from typegpu.ts | 151 B (➖) |
| MissingVertexBuffersError from typegpu.ts | 1.36 kB (➖) |
| NotUniformError from typegpu.ts | 1.31 kB (➖) |
| ResolutionError from typegpu.ts | 2.33 kB (➖) |
| ShaderGenerator from typegpu.ts | 1.66 kB (➖) |
| Void from typegpudata.ts | 734 B (➖) |
| atomic from typegpudata.ts | 779 B (➖) |
| comparisonSampler from typegpudata.ts | 753 B (➖) |
| deepEqual from typegpudata.ts | 2.19 kB (➖) |
| isAccessor from typegpu.ts | 65 B (➖) |
| isAlignAttrib from typegpudata.ts | 755 B (➖) |
| isAtomic from typegpudata.ts | 755 B (➖) |
| isBufferShorthand from typegpu.ts | 1.71 kB (➖) |
| isBuiltinAttrib from typegpudata.ts | 757 B (➖) |
| isData from typegpudata.ts | 1.81 kB (➖) |
| isDecorated from typegpudata.ts | 758 B (➖) |
| isDisarray from typegpudata.ts | 1.11 kB (➖) |
| isInterpolateAttrib from typegpudata.ts | 761 B (➖) |
| isLazy from typegpu.ts | 61 B (➖) |
| isLocationAttrib from typegpudata.ts | 758 B (➖) |
| isLooseData from typegpudata.ts | 1.16 kB (➖) |
| isLooseDecorated from typegpudata.ts | 1.12 kB (➖) |
| isMutableAccessor from typegpu.ts | 73 B (➖) |
| isPtr from typegpudata.ts | 752 B (➖) |
| isSizeAttrib from typegpudata.ts | 754 B (➖) |
| isSlot from typegpu.ts | 61 B (➖) |
| isTgpuComputeFn from typegpu.ts | 69 B (➖) |
| isTgpuFn from typegpu.ts | 765 B (➖) |
| isTgpuFragmentFn from typegpu.ts | 70 B (➖) |
| isTgpuVertexFn from typegpu.ts | 68 B (➖) |
| isUnstruct from typegpudata.ts | 1.11 kB (➖) |
| isUsableAsRender from typegpu.ts | 55 B (➖) |
| isUsableAsSampled from typegpu.ts | 56 B (➖) |
| isUsableAsStorage from typegpu.ts | 56 B (➖) |
| isWgslArray from typegpudata.ts | 754 B (➖) |
| isWgslData from typegpudata.ts | 1.31 kB (➖) |
| isWgslStruct from typegpudata.ts | 755 B (➖) |
| ptrFn from typegpudata.ts | 859 B (➖) |
| ptrHandle from typegpudata.ts | 851 B (➖) |
| ptrPrivate from typegpudata.ts | 858 B (➖) |
| ptrStorage from typegpudata.ts | 856 B (➖) |
| ptrUniform from typegpudata.ts | 852 B (➖) |
| ptrWorkgroup from typegpudata.ts | 860 B (➖) |
| ref from typegpudata.ts | 4.79 kB (➖) |
| sampler from typegpudata.ts | 742 B (➖) |
| struct from typegpudata.ts | 3.42 kB (➖) |
| textureExternal from typegpudata.ts | 873 B (➖) |
| textureStorage1d from typegpudata.ts | 1.01 kB (➖) |
| textureStorage2dArray from typegpudata.ts | 1.03 kB (➖) |
| textureStorage2d from typegpudata.ts | 1.01 kB (➖) |
| textureStorage3d from typegpudata.ts | 1.01 kB (➖) |
| unstruct from typegpudata.ts | 1.55 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.79, 1.66, 3.56, 5.55, 6.24, 9.77, 16.76, 18.59]
line [0.77, 1.59, 3.34, 5.66, 6.13, 8.85, 17.96, 19.46]
line [0.85, 1.73, 3.49, 5.25, 6.15, 8.86, 19.42, 21.26]
---
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.29, 0.52, 0.59, 0.74, 0.94, 1.00, 1.27, 1.46]
line [0.27, 0.48, 0.58, 0.74, 1.08, 1.05, 1.29, 1.37]
line [0.30, 0.50, 0.60, 0.73, 1.00, 1.01, 1.30, 1.44]
---
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.78, 1.80, 3.70, 5.66, 10.16, 22.54, 45.81, 95.63]
line [0.83, 1.79, 3.09, 5.37, 10.52, 21.76, 47.85, 97.31]
line [0.73, 1.80, 3.38, 5.38, 10.36, 22.56, 48.14, 97.21]
|
9ae8673 to
ed82a37
Compare
d1131a4 to
4839547
Compare
d6b058d to
9c1810c
Compare
7da7ef8 to
6b47b95
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds support for resolving struct-to-struct “casts” (i.e., copying between different d.struct(...) schemas by expanding into per-property constructor arguments) and introduces test coverage for these scenarios, addressing a failing test related to inter-struct copies.
Changes:
- Added multiple tests covering struct casts (same-shape, coercing member types, nested structs, subtype→supertype) and expected failure modes.
- Implemented struct→struct conversion logic in
tgsl/conversion.tsto auto-expand casts intoTarget(prop1, prop2, ...). - Extracted struct/unstruct property access into a shared helper (
accessStructProp) and reused it fromaccessProp.ts.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| packages/typegpu/tests/struct.test.ts | Adds test cases validating struct cast resolution and error reporting. |
| packages/typegpu/src/tgsl/generationHelpers.ts | Introduces accessStructProp helper for struct/unstruct property access. |
| packages/typegpu/src/tgsl/conversion.ts | Adds struct-to-struct cast ranking + codegen/validation for per-property casting. |
| packages/typegpu/src/tgsl/accessProp.ts | Refactors struct member access to use the shared helper. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
9c1810c to
6642a24
Compare
|
Can we reuse We could, however this would silence the error, and the code would not be any cleaner. Actually, why does |
6642a24 to
bcfac6f
Compare
| // Struct to struct casting | ||
| if (!isAlias(snippet)) { | ||
| throw new Error( | ||
| `Cannot resolve struct cast from '${typeName}' to '${targetName}'. Store the casted value in a variable first.`, |
There was a problem hiding this comment.
| `Cannot resolve struct cast from '${typeName}' to '${targetName}'. Store the casted value in a variable first.`, | |
| `Cannot resolve struct cast from '${typeName}' to '${targetName}'. Store the value to a variable first, then cast it.`, |
| return snip( | ||
| `${targetSnippet}(${propSnips.map((snip) => snip.value).join(', ')})`, | ||
| targetType, | ||
| 'runtime', |
There was a problem hiding this comment.
| 'runtime', | |
| 'runtime', | |
| false |
Since it is a reference, it doesn't have side effects.
No description provided.