Condividi tramite


Calcolo della memoria grafica

Il gestore della memoria video (VidMm) deve calcolare la quantità totale di memoria grafica prima di poter segnalare un account accurato. Usa quanto segue per calcolare i numeri di memoria grafica:

  • Memoria totale del sistema

    Questo valore è la quantità totale di memoria di sistema accessibile al sistema operativo. La memoria allocata dal BIOS non viene visualizzata in questo numero. Ad esempio, un computer con 1 GB DIMM (ovvero 1.024 MB) con un BIOS che riserva 1 MB di memoria sembra avere 1.023 MB di memoria di sistema.

  • Memoria totale di sistema disponibile per l'uso della grafica

    Questo valore è la quantità totale di memoria di sistema dedicata o condivisa alla GPU. Questo numero viene calcolato come segue:

    TotalSystemMemoryAvailableForGraphics = MAX((TotalSystemMemory / 2), 64MB)
    
  • Limite di commit nel segmento di apertura

    Questo valore è la quantità di memoria di sistema che VidMm consente di visualizzare i driver miniport (KMD) in modalità kernel per l'uso della GPU in qualsiasi momento. Vale a dire, è la quantità di memoria di sistema che i KMD possono mappare attraverso un segmento di apertura. La quantità totale di memoria di sistema allocata per la GPU potrebbe superare notevolmente il limite di commit; Tuttavia, VidMm garantisce che solo fino a un importo limite di commit sia effettivamente residente in un segmento di apertura in qualsiasi momento.

    Per impostazione predefinita, il limite di commit per un segmento di apertura specifico è la dimensione di tale segmento. Il kmD può specificare un limite di commit diverso nel membro CommitLimit della struttura DXGK_SEGMENTDESCRIPTOR quando il driver descrive il segmento. Un limite di commit specificato in modo tale da applicare solo al segmento specifico descritto dal driver.

    Oltre al limite di commit per segmento, esiste un limite di commit globale per tutti i segmenti di apertura. Questo limite di commit globale è noto anche come memoria di sistema condivisa. VidMm calcola questo valore. Un KMD può ridurre questo valore a un valore inferiore nel membro ApertureSegmentCommitLimit della struttura DXGK_DRIVERCAPS . Tuttavia, questa procedura non è consigliata.

    VidMm non consente a un KMD di violare il limite di commit per segmento o il limite di commit globale. Se un determinato segmento ha un limite di commit di 1 GB, ma il limite di commit globale è 256 MB, VidMm non consente a un kmD di eseguire il mapping di più di 256 MB di memoria di sistema in tale segmento.

  • Memoria video dedicata

    Questo valore è la somma delle dimensioni di tutti i segmenti di memoria per i quali il KMD non ha specificato il membro PopulatedFromSystemMemory nella struttura DXGK_SEGMENTFLAGS per ogni segmento.

  • Memoria di sistema dedicata

    Questo valore è la somma delle dimensioni di tutti i segmenti di memoria per cui il KMD specifica il membro PopulatedFromSystemMemory nella struttura DXGK_SEGMENTFLAGS per ogni segmento. Questo numero non può essere maggiore della memoria di sistema totale disponibile per l'uso della grafica (TotalSystemMemoryAvailableForGraphics).

  • Memoria massima del sistema condiviso

    Questo valore è la quantità massima di memoria di sistema condivisa nella GPU. Viene calcolato usando la formula seguente:

    MaxSharedSystemMemory = TotalSystemMemoryAvailableForGraphics - DedicatedSystemMemory
    
  • Memoria di sistema condivisa

    Questo valore è la quantità di memoria di sistema condivisa con la GPU. Viene calcolato usando la formula seguente:

    SharedSystemMemory = MIN(MIN(SumOfCommitLimitOnAllApertureSegment, DXGK_DRIVERCAPS.ApertureSegmentCommitLimit), MaxSharedSystemMemory)
    
  • Memoria video totale

    Questo valore è la quantità totale di memoria video. Viene calcolato usando la formula seguente:

    TotalVideoMemory = DedicatedVideoMemory + DedicatedSystemMemory + SharedSystemMemory