Supporto di AGP

Microsoft DirectDraw considera la memoria AGP (Accelerated Graphics Port) come sottoclasse della memoria di visualizzazione. Questo tipo di memoria viene definito memoria di visualizzazione non locale. I termini memoria e memoria di visualizzazione non locale sono sinonimi dal punto di vista dei driver DirectDraw e DirectDraw.

La memoria AGP è considerata una sottoclasse pura della memoria di visualizzazione. Ovvero, se un driver indica che supporta la memoria AGP, nella maggior parte dei casi deve avere le stesse funzionalità per la memoria di visualizzazione locale e non locale, anche se sono consentite differenze di prestazioni. L'eccezione è se il flag di DDCAPS2_NONLOCALVIDMEMCAPS è impostato, in questo caso le funzionalità blt per la memoria di visualizzazione non locale possono essere diverse dalla memoria di visualizzazione locale.

Ad esempio, se un driver indica che può tramere dalla memoria di visualizzazione, deve essere in grado di tramare sia dalla memoria di visualizzazione locale che non locale. Blitting viene trattato in modo analogo. Un driver che esporta la funzionalità blt chiave del colore di origine deve essere in grado di eseguire una chiave a colori di origine sia da che da una memoria di visualizzazione non locale. L'unica eccezione a questa regola è che è possibile impedire l'allocazione di determinati tipi di superficie nella memoria di visualizzazione non locale. Ad esempio, è possibile usare heaps per impedire che le superfici di sovrapposizione vengano allocate in memoria AGP.

Poiché la memoria AGP viene considerata come sottoclasse della memoria di visualizzazione, DirectDraw non dispone di un set separato di punti di ingresso del driver di visualizzazione per la memoria AGP. Le chiamate del driver di visualizzazione esistenti vengono usate sia per le superfici di visualizzazione AGP che per le superfici di memoria di visualizzazione locale. Un driver compatibile con AGP deve controllare le superfici in ingresso per verificare se si trovano in memoria di visualizzazione non locale o locale e intraprendere l'azione appropriata. I blts dal sistema a AGP (e viceversa) passano attraverso il livello di emulazione DirectDraw come normale, a meno che un driver supporti anche i blts di memoria da sistema a display (in questo caso deve supportare anche trasferimenti da sistema a AGP).

I driver devono impostare il flag di DDCAPS2_TEXMANINNONLOCALVIDMEM il più possibile perché la gestione trame Direct3D mantiene l'immagine di backup della copia della memoria video di una superficie in memoria AGP (anziché memoria di sistema) quando si tratta del caso.

Nella parte restante di questa sezione vengono illustrati i passaggi necessari per modificare il driver esistente per supportare la memoria AGP usando le funzionalità di memoria di visualizzazione non locali di DirectDraw.