Freigeben über


DXGKCB_CREATECONTEXTALLOCATION Rückruffunktion (d3dkmddi.h)

DXGKCB_CREATECONTEXTALLOCATION ordnet einen GPU- oder gerätespezifischen Kontext zu.

Syntax

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

Parameter

[in/out] unnamedParam1

Ein Zeiger auf eine DXGKARGCB_CREATECONTEXTALLOCATION-Struktur , die die Attribute des zuzuordnenden Kontexts angibt.

Rückgabewert

DXGKCB_CREATECONTEXTALLOCATION gibt bei Erfolg STATUS_SUCCESS zurück. Andernfalls wird einer der in Ntstatus.h definierten Fehlercodes zurückgegeben.

Hinweise

Ab WDDM 1.2 können Anzeigeminiporttreiber einen GPU-spezifischen Kontext (GPU-Kontextzuordnung) oder einen gerätespezifischen Kontext (Gerätekontextzuordnung) zuordnen.

Eine GPU-Kontextzuordnung ermöglicht GPUs das Speichern des Kontextzustands aus DMA-Puffern, die während der Ausführung vorzeitig entfernt werden. Treiber erstellen Zuordnungen, die einem GPU-Kontext zugeordnet sind, um seinen Zustand bei Bedarf zu speichern. Das Betriebssystem stellt sicher, dass die Kontextzuordnung resident ist, bevor ein Befehl aus diesem Kontext in der Hardwareausführungswarteschlange der GPU platziert wird. Der Kontext bleibt resident, bis ein Befehl aus einem anderen Kontext in der Hardwareausführungswarteschlange platziert wird.

Darüber hinaus unterstützt das Betriebssystem verzögerte GPU-Kontextwechsel, indem davon ausgegangen wird, dass der Hardwarekontextzustand auf der GPU beibehalten wird, nachdem ein Befehl abgeschlossen wurde, der zum Kontext gehört. Auf diese Weise werden Kontexte nur auf der GPU umgeschaltet, wenn ein Befehl aus einem anderen Kontext an die Hardwarewarteschlange übermittelt wird.

DXGKCB_XXX Funktionen werden von Dxgkrnl implementiert. Um diese Rückruffunktion zu verwenden, legen Sie die Member von DXGKARGCB_ALLOCATEPAGESFORMDL fest, und rufen Sie dann DxgkCbCreateContextAllocation über die DXGKRNL_INTERFACE auf.

GPU-Kontextzuordnungen

GPU-Kontextzuordnungen können nur für Nicht-Systemkontexte vorgenommen werden. Der Anzeige-Miniporttreiber erstellt diese Kontexte durch Aufrufen von DxgkDdiCreateContext. Um einen Nicht-Systemkontext zu erstellen, legt der Treiber den SystemContext-Member einer DXGK_CREATECONTEXTFLAGS-Struktur auf Null fest und übergibt einen Zeiger auf diese Struktur im pCreateContext-Parameter .

Eine Gerätekontextzuordnung folgt einem ähnlichen Modell, mit der Ausnahme, dass sie für jeden Kontext resident bleibt, der zu dem Gerät gehört, dem sie zugeordnet ist. Dieses Modell ermöglicht Es Treibern, GPU-Kontextzuordnungen zum Speichern von GPU-Kontextspeicherbereichsdaten (GPU Context Save Area, CSA) zu verwenden und Gerätekontextzuordnungen zum Speichern von Seitentabellendaten zu verwenden.

Gerätekontextzuordnungen

Gerätekontextzuordnungen können nur für Nicht-Systemgeräte vorgenommen werden. Der Display-Miniporttreiber erstellt diese Geräte durch Aufrufen von DxgkDdiCreateDevice. Um ein Nicht-Systemgerät zu erstellen, legt der Treiber den Flags.SystemDevice-Member einer DXGK_CREATEDEVICEFLAGS-Struktur auf Null fest und übergibt einen Zeiger auf diese Struktur im Parameter pCreateDevice .

Der Anzeige-Miniporttreiber ruft DXGKCB_DESTROYCONTEXTALLOCATION auf, um die Kontextressourcen freizugeben, die über DxgkCbCreateContextAllocation zugewiesen wurden.

Virtuelle Adressen für Zielkontextzuordnungen

Um sicherzustellen, dass das Betriebssystem eine gültige virtuelle Adresse (ungleich NULL) für die Zielkontextzuordnung (InitContextResource-Destination-VirtualAddress-Member>> der DXGKARG_BUILDPAGINGBUFFER-Struktur) festlegt, muss der Anzeige-Miniporttreiber DxgkCbCreateContextAllocation aufrufen:

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 (WDDM 1.2)
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Desktop
Kopfzeile d3dkmddi.h (einschließlich D3dkmddi.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE