Freigeben über


Berechnen des Grafikspeichers

Der Videospeicher-Manager (VidMm) muss die Gesamtmenge des Grafikspeichers berechnen, bevor es ein genaues Konto melden kann. Es verwendet Folgendes, um Grafikspeichernummern zu berechnen:

  • Gesamter Systemspeicher

    Dieser Wert ist die Gesamtmenge des Systemspeichers, auf den das Betriebssystem zugreifen kann. Speicher, den das BIOS zuweist, wird in dieser Zahl nicht angezeigt. Ein Computer mit 1 GB DIMM (d. h. 1.024 MB) mit einem BIOS, das 1 MB Arbeitsspeicher reserviert, scheint 1.023 MB Systemspeicher zu haben.

  • Gesamter Systemspeicher, der für die Grafikverwendung verfügbar ist

    Dieser Wert ist die Gesamtmenge des Systemspeichers, der für die GPU reserviert oder freigegeben ist. Diese Zahl wird wie folgt berechnet:

    TotalSystemMemoryAvailableForGraphics = MAX((TotalSystemMemory / 2), 64MB)
    
  • Festschreibungsgrenze für Blendensegment

    Dieser Wert ist die Menge des Systemspeichers, den VidMm erlaubt, Miniporttreiber (KMDs) im Kernelmodus für die GPU-Verwendung sofort anzuheften. Das heißt, es ist die Menge des Systemspeichers, den KMDs über ein Blendensegment speichern können. Die Gesamtmenge des Systemspeichers, der für die GPU zugewiesen ist, kann den Commit-Grenzwert erheblich überschreiten. VidMm stellt jedoch sicher, dass nur bis zu einem Commit-Limit-Betrag jederzeit in einem Blendensegment ansässig ist.

    Standardmäßig ist der Commit-Grenzwert für ein bestimmtes Blendensegment die Größe dieses Segments. Die KMD kann einen anderen Commit-Grenzwert im CommitLimit-Element der DXGK_SEGMENTDESCRIPTOR Struktur angeben, wenn der Treiber das Segment beschreibt. Ein Commit-Limit, das auf eine solche Weise angegeben ist, gilt nur für das bestimmte Segment, das der Treiber beschreibt.

    Zusätzlich zum Commit-Limit pro Segment gibt es ein globales Commitlimit für alle Blendensegmente. Dieser globale Commit-Grenzwert wird auch als gemeinsam genutzter Systemspeicher bezeichnet. VidMm berechnet diesen Wert. Ein KMD kann diesen Wert auf einen niedrigeren Wert im BlendSegmentCommitLimit-Element der DXGK_DRIVERCAPS Struktur reduzieren. Wir empfehlen diese Vorgehensweise jedoch nicht.

    VidMm lässt es nicht zu, dass eine KMD gegen das Commitlimit pro Segment oder gegen den globalen Commit-Grenzwert verstößt. Wenn ein bestimmtes Segment einen Commit-Grenzwert von 1 GB aufweist, der globale Commit-Grenzwert jedoch 256 MB beträgt, lässt VidMm keine KMD zu, um mehr als 256 MB Systemspeicher in diesem Segment zuzuordnen.

  • Dedizierter Videospeicher

    Dieser Wert ist die Summe der Größe aller Speichersegmente, für die die KMD das PopulatedFromSystemMemory-Element in der DXGK_SEGMENTFLAGS-Struktur für jedes Segment nicht angegeben hat.

  • Dedizierter Systemspeicher

    Dieser Wert ist die Summe der Größe aller Speichersegmente, für die die KMD das PopulatedFromSystemMemory-Element in der DXGK_SEGMENTFLAGS Struktur für jedes Segment angibt. Diese Zahl kann nicht größer als der gesamt verfügbare Systemspeicher für die Verwendung von Grafiken (TotalSystemMemoryAvailableForGraphics).

  • Maximal freigegebener Systemspeicher

    Dieser Wert ist die maximale Menge an Systemspeicher, die für die GPU freigegeben ist. Sie wird mit der folgenden Formel berechnet:

    MaxSharedSystemMemory = TotalSystemMemoryAvailableForGraphics - DedicatedSystemMemory
    
  • Freigegebener Systemspeicher

    Dieser Wert ist die Menge des Systemspeichers, der für die GPU freigegeben ist. Sie wird mit der folgenden Formel berechnet:

    SharedSystemMemory = MIN(MIN(SumOfCommitLimitOnAllApertureSegment, DXGK_DRIVERCAPS.ApertureSegmentCommitLimit), MaxSharedSystemMemory)
    
  • Gesamter Videospeicher

    Dieser Wert ist die Gesamtmenge des Videospeichers. Sie wird mit der folgenden Formel berechnet:

    TotalVideoMemory = DedicatedVideoMemory + DedicatedSystemMemory + SharedSystemMemory