Modifying state during execution of command lists is an essential feature of the back-ends that will benefit from command lists. As such, the state objects that are part of the command list should be modifiable using the run_function command. Users will also need to restore their state once they've finished modifying them. Unless they want the modified state to exist at the beginning of the next execution of the command list, of course. This will provide users more control at the expense of requiring them to manage threading and locks. The "immediate" API used by directly calling functions on surfaces will remain free of the need for the user to deal with any threading and lock issues.
Modifying state during execution of command lists is an essential feature of the back-ends that will benefit from command lists. As such, the state objects that are part of the command list should be modifiable using the run_function command. Users will also need to restore their state once they've finished modifying them. Unless they want the modified state to exist at the beginning of the next execution of the command list, of course. This will provide users more control at the expense of requiring them to manage threading and locks. The "immediate" API used by directly calling functions on surfaces will remain free of the need for the user to deal with any threading and lock issues.