Writing a bindless GPU abstraction layer