Abstraction layers insulating client code from replaceable lower-level support facilities (like gfx. APIs) should be designed to support the sweet-spot (fictional optimum) of the client-level (application) domain, rather than trying to come up with yet another ("improved", "generalized", "independent") API to replace the already existing ones (-> xkcd/927)!
In perf.-critical cases this may well include directly adopting the API of a used/preferred facility.
Poll these regularly!...