Direct Rendering Manager: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Ldd (discussione | contributi) |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
(26 versioni intermedie di 17 utenti non mostrate) | |||
Riga 1:
Il '''
▲Il '''Gestore del Rendering Diretto''' (DRM - Direct Rendering Manager) è una componente dell''''Infrastruttura del Rendering Diretto''' (DRI - [[Direct Rendering Infrastructure]]), un sistema che permette di utilizzare efficientemente l'accelerazione video (soprattutto quella legata al 3D) nei sistemi Unix-like.
Consiste di due moduli all'interno del [[kernel]] che fungono da
== Il driver generico del DRM ==
Spesso quando si parla di DRM, si intende il driver del DRM, in questa seconda parte ci si riferirà al driver DRM usando semplicemente la sigla DRM.
=== DRM ed integrazione nel sistema ===
Il DRM è strettamente legato alle seguenti componenti che si possono trovare all'interno del sistema:
# Il DMA ([[Direct Memory Access]]) o accesso diretto alla memoria.
# Il [[gestore della memoria]] dell'AGP ([[Accelerated Graphics Port]]).
# Il blocco delle risorse.
# L'accesso sicuro all'hardware.
Le prime due componenti vengono utilizzate per la comunicazione con l'hardware.
La terza viene utilizzata per condividere il
L'ultima serve a proteggere l'hardware da un eventuale codice malevolo, visto che teoricamente qualsiasi processo in ''userspace'' può usufruire del
===Il ruolo del DRM nel DRI===
Il DRM occupandosi della gestione, supporta il DRI in molti modi, la maggior parte dei quali usando le componenti citate sopra.
==== La mutua esclusione ====
Il DRM si occupa di far entrare in modalità sequenziale tutti quei processi che potrebbero voler accedere all'hardware grafico. Tuttavia il DRM non evita soltanto che due processi tentino di scrivere dati nel
È da notare che non tutti i programmi richiedono un accesso diretto, ad esempio molti programmi 2D passano per un gestore intermediario.
=== Politiche di sicurezza ===
Il DRM gestisce anche le politiche di sicurezza quando un determinato processo non ha i privilegi necessari per mappare le regioni di memoria dell'hardware grafico su /dev/mem.
Il DRM permette ad un processo [[client]] di mappare delle zone di memoria del
*Il client può mappare solo le regioni di memoria che gli appartengono, questo forza il client ad obbedire alle politiche di sicurezza che gli vengono imposte dal server X (come xauth un'applicazione che si occupa delle [[Autorizzazioni X Window]]).
*Il client può solo mappare le regioni se riesce ad accedere a /dev/drm, quindi l'amministratore può decidere se permettere ad un certo utente di accedere alle funzioni di rendering diretto. Per fare ciò un utente deve far parte di un gruppo specificato nel file di configurazioni XF86Config.
*Il client può solo mappare le regioni che il server X gli permette di mappare, infatti oltre a bloccare le zone che non gli appartengono direttamente, il server può decidere di restringere l'accesso a certe zone di memoria, ad esempio rendendole di sola lettura, in modo da poterci inserire dei [[dati sensibili]] (come ad esempio i dati relativi all'avvio del DMA).▼
==== Accesso ai dati ====▼
▲*Il client può solo mappare le regioni che il server X gli permette di mappare, infatti oltre a bloccare le zone che non gli appartengono direttamente, il server può decidere di restringere l'accesso a certe zone di memoria, ad esempio rendendole di sola lettura, in modo da poterci inserire dei dati sensibili (come ad esempio i dati relativi all'avvio del DMA).
Il DRM utilizza in una modalità ottimizzata il DMA, Il migliore ''[[throughput]]'' è permesso dai seguenti fattori:▼
▲=== Accesso ai dati ===
# Il server X può specificare un insieme di '''diverse dimensioni del ''buffer''''' che desidera allocare ed in seguito bloccare.▼
▲Il DRM utilizza in una modalità ottimizzata il DMA, Il migliore [[throughput]] è permesso dai seguenti fattori:
# Il client può mappare questi
# Il client può riservare alcuni di questi
▲# Il server X può specificare un insieme di diverse dimensioni del buffer che desidera allocare ed in seguito bloccare.
# Il DRM gestisce una coda di '''buffer del DMA''' per ogni contesto GLXContext dell'OpenGL, e si accorge quando è necessario uno switch. Quando risulta necessario cambiare contesto, si tenta di usare un driver specifico (in kernel-space), se questo non è disponibile si ritorna al server X che possiede un metodo generico per il GLXContext switching. Infine il
▲# Il client può mappare questi buffers usando un indirizzamento virtuale (tramite le [[API]] DRM).
# Il sistema DMA è generico nel senso che un server X può
▲# Il client può riservare alcuni di questi buffers all'uso tramite DRM, ad esempio per riempirlo con dei dati e chiedere al DRM di inviare tali dati all'hardware grafico. (Di solito i buffers più piccoli vengono usati per assicurarsi che il server X possa ottenere il blocco durante i trasferimenti consecutivi tra buffer ed il device grafico, in tal modo il server diviene maggiormente reattivo).
▲# Il DRM gestisce una coda di '''buffer del DMA''' per ogni contesto GLXContext dell'OpenGL, e si accorge quando è necessario uno switch. Quando risulta necessario cambiare contesto, si tenta di usare un driver specifico (in kernel-space), se questo non è disponibile si ritorna al server X che possiede un metodo generico per il GLXContext switching.Infine il DMR si occupa anche di schedulare le richieste ai vari buffer per evitare di eseguire cambi di contesto inutili.
▲# Il sistema DMA è generico nel senso che un server X può ottenre delle informazioni in tempo reale e richiede quali operazioni può eseguire sull'hardware presente nella macchina. Il server X si accorge di quale hardware e' collegato e decide con quali modalità renderlo disponibile. Questo permette un facile utilizzo di eventuali nuovi device grafici tramite DRI, permettendo successivamente di usare un driver specifico che possa migliorarne le prestazioni.
== Voci correlate ==
* [[Direct Rendering Infrastructure
* [[Direct Memory Access
==Collegamenti esterni==
*
{{Freedesktop.org}}
{{portale|software libero}}
[[Categoria:X Window System]]
[[Categoria:Freedesktop.org]]
[[Categoria:Progetti di software libero ad alta priorità]]
[[Categoria:Linux]]
|