Without explicit wait calls, every rendering call of every API needs to a test to check if some other context is currently rendering and if so, wait for it. This test will affect performance. It might only be a single if, but it will be in every rendering call. It also means that each rendering API needs to know about all the other APIs that can be used, which in turn means you have to update every API when a new one is added.
And then there is Chris's point, that hiding the synchronization, makes people not realize the impact of their simple change to, e.g., draw a score on their WebGL game using a 2D API.
Having explicit sync. makes it clear to everyone what is going on and keeps the APIs independent of each other.
Kenneth Russell wrote:
begin:vcard fn:Mark Callow n:Callow;Mark org:HI Corporation;Graphics Lab, Research & Development adr:Higashiyama 1-4-4, Meguro-ku;;Meguro Higashiyama Bldg 5F;Tokyo;;153-0043;Japan email;internet:firstname.lastname@example.org title:Chief Architect tel;work:+81 3 3710 9367 x228 tel;fax:+81 3 5773 8660 x-mozilla-html:TRUE url:http://www.hicorp.co.jp, http://www.mascotcapsule.com version:2.1 end:vcard