# WebGPU encapsulation layer Contents and Responsibility: * Provide clone-able and thread-safe wrapper for resource type. * Record all related info with resource wrapper for convenience. * Provide bindgroup cache and binding encapsulation, user could not care bindgroup management at all. * Provide async functions for resource async read. * Using stricter and polished api surface to reduce runtime exception. * Moving forward some validation check at first error commit site, make it easy to debug issue. * Enable more advance validation check, such as check if buffer binding has same data type. * ~~Workaround annoying wgpu lifetime limitations, but also expose raw api for performance.~~ * this issue is fixed upstream at wgpu version 22. however wgpu::RenderPass<'static> is ugly to use and some kind of the encapsulation still preferred. * Bridge the shader and pipeline infrastructure to RRF shader api system. * Potential performance optimization and inspection. * Fix resource leaky behavior in web environment. * Provider a range allocator for gpu buffer. * Reexport common wgpu-types. * Other shareable & reuseable components.