An opaque sampler — filter and wrap state as an object (§77).
The one structural difference between this backend's texture tier and the
WebGL one, and the reason wgpu-texture.ts has a second cache in it: GL
writes filter and wrap onto the texture with texParameteri, so R-30's
sampler state is per-texture and costs nothing to vary. WebGPU makes it a
separate, immutable object bound alongside the texture, so a thousand
textures sharing one filter/wrap pair should share one sampler rather
than allocate a thousand identical ones.
An opaque sampler — filter and wrap state as an object (§77).
The one structural difference between this backend's texture tier and the WebGL one, and the reason
wgpu-texture.tshas a second cache in it: GL writes filter and wrap onto the texture withtexParameteri, so R-30's sampler state is per-texture and costs nothing to vary. WebGPU makes it a separate, immutable object bound alongside the texture, so a thousand textures sharing one filter/wrap pair should share one sampler rather than allocate a thousand identical ones.