Could this go inside `execute` instead? I'm thinking that some apps might want to re-use contexts across shader invocations if they know the shaders won't re-enter each other (which is 99% of use cases).