In che modo le librerie come DirectX si riferiscono ai driver?

1

Sono sempre stato curioso, come sono implementate librerie come DirectX, OpenGL e OpenAL. Usano una sorta di API unificata fornita dal sistema operativo? Parla direttamente con il kernel? Forse i driver hardware forniscono API unificate? O i venditori forniscono i propri backend a tali librerie? Persino intere implementazioni di tali librerie? Oppure queste librerie gestiscono autonomamente driver diversi?

    
posta Anton Barkovsky 23.06.2011 - 00:29
fonte

1 risposta

5

OpenGL è normalmente implementato dal fornitore dell'hardware, come parte del loro driver. Su Windows, questo è fatto come ICD - Installable Client Driver. Su Linux, è spesso implementato come driver di backend per Mesa (una libreria compatibile con OpenGL), ma i driver binari come NVIDIA di solito hanno un libGL.so implementato su misura. Su Mac, credo sia costruito come back-end per l'implementazione OpenGL di Apple.

DirectX è molto diverso: il fornitore di software (Microsoft) fornisce un'API di driver unificata a cui è previsto lo sviluppo del fornitore di hardware e una serie di standard (WIHL, tra gli altri) che dovrebbero essere seguiti.

OpenAL è una bestia completamente diversa. Dal momento che è solo scritto per fornire il supporto hardware per le carte di Creative Labs, c'è davvero solo un driver hardware: tutte le altre schede audio utilizzano un'implementazione di un mixer software (di cui ce ne sono alcune diverse).

È molto raro per i driver hardware implementare la propria API unificata sotto OpenGL o qualcosa come OpenAL. La ragione di ciò è che le specifiche lasciano completamente aperta la questione dell'implementazione. DirectX essenzialmente impone un'API hardware dal suo design, ma questa API non è mai esposta al software di userland.

(Come nota a margine, Mesa si sta sostituendo con Gallium3D, un'API unificata per i driver hardware, e Gallium3D è abbastanza generico da implementare uno stack completo di librerie compatibile con sorgenti DirectX 10/11. Nessun fornitore di hardware a mia conoscenza offre driver compatibili con Gallium e tutti i driver esistenti sono basati sui driver open source già utilizzati da X.org e Mesa.

    
risposta data 23.06.2011 - 01:12
fonte

Leggi altre domande sui tag