Direct Rendering Manager: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
elimino immagini poco chiare con didascalie mezze in inglese mezze in spagnolo |
lingua e formattazione |
||
Riga 1:
Il '''Direct Rendering Manager''' ('''DRM''') è una componente dell'infrastruttura del rendering diretto (DRI - [[Direct Rendering Infrastructure|''Direct Rendering Infrastructure'']]), un sistema che permette di utilizzare efficientemente l'accelerazione video (soprattutto quella legata al [[Computer grafica 3D|3D]]) nei sistemi [[Unix-like]].
Consiste di due moduli all'interno del [[kernel]] che fungono da [[driver|''driver'']], un driver generico DRM ed un driver specifico per la [[scheda video]]. Questi driver permettono ad un'applicazione in ''userspace'' di accedere direttamente all'hardware video.
== Il driver generico del DRM ==
Riga 15:
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===
Riga 22:
==== 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]]).
Riga 34:
==== Accesso ai dati ====
Il DRM utilizza in una modalità ottimizzata il DMA, Il migliore [[throughput|''throughput'']] è permesso dai seguenti fattori:
# Il server X può specificare un insieme di '''diverse dimensioni del ''buffer''''' che desidera allocare ed in seguito bloccare.
# Il client può mappare questi ''buffer'' usando un '''indirizzamento virtuale''' (tramite le [[Application programming interface|API]] DRM).
# Il client può riservare alcuni di questi ''buffer'' 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 buffer più piccoli vengono usati per assicurarsi che il server X possa ottenere il blocco durante i trasferimenti consecutivi tra ''buffer'' ed il
# 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 DRM 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ò ottenere delle informazioni in tempo reale ed in seguito richiedere quali operazioni può eseguire sull'hardware presente nella macchina. Il server X si accorge di quale hardware è collegato e decide con quali modalità renderlo disponibile. Questo facilita l'utilizzo di eventuali nuovi
== Voci correlate ==
|