The reason is we don't know where to bind the new vertex/index buffer which are going to be created according to the drawRect command. We could say e.g. location 1 is always reserved for drawRect command. However that imposes limitation on the shader code and it's generally too much since we can alway replace a drawRect command with a drawArray.
- We can issue the error in the executor (no need for change in the backends even if we add a new one)