Diferença entre uma API e um driver de dispositivo

Eu tento entender como os dois se relacionam. Tanto quanto eu sei, os dois podem fazer parte do HAL. No caso de uma comunicação entre um aplicativo e uma placa gráfica - uma API pode fazer o trabalho por conta própria ou precisamos confiar nas duas? Uma API pode se comunicar diretamente com o hardware ou sempre precisamos de um driver intermediário, que traduza o comando da API?

questionAnswers(1)

yourAnswerToTheQuestion