It's destroying and creating Vulkan objects (which then in turn destroy and create Metal objects) when changing some random GL state (aka "hash-and-cache") which is the critical problem when trying to emulate GL on a modern 3D API.
Modern 3D APIs have moved all expensive operations into the creation of immutable state-group objects, while OpenGL is the opposite (every single state can be changed at any time).
E.g. mapping any modern 3D API to any other modern 3D API is mostly fine since the expensive operations happen outside the hot path, but mapping OpenGL to any modern 3D API is problematic.