PFND3DDDI_CREATERESOURCE2 Rückruffunktion (d3dumddi.h)
Erstellt eine Ressource. Implementiert durch Windows Display Driver Model (WDDM) 1.2 und höher Benutzermodus-Anzeigetreiber.
Syntax
PFND3DDDI_CREATERESOURCE2 Pfnd3dddiCreateresource2;
HRESULT Pfnd3dddiCreateresource2(
[in] HANDLE hDevice,
D3DDDIARG_CREATERESOURCE2 *unnamedParam2
)
{...}
Parameter
[in] hDevice
Ein Handle für das Anzeigegerät (Grafikkontext), das zum Erstellen der Ressource verwendet wird.
unnamedParam2
pResource2- [in, out]
Ein Zeiger auf eine D3DDDIARG_CREATERESOURCE2 Struktur, die die erstellte Ressource beschreibt.
Rückgabewert
Gibt S_OK oder ein entsprechendes Fehlerergebnis zurück. WDDM 1.3- und höher-Treiber der Direct3D-Ebene 9 müssen diesen Fehlercode zurückgeben:
Rückgabecode | Beschreibung |
---|---|
E_INVALIDARG | Die D3DDDIARG_CREATERESOURCE2 . Flagsmember hat den CaptureBuffer-Flagwert festgelegt, und die Ressource überschreitet, was der Treiber unterstützen kann. |
Bemerkungen
Der Aufruf von CreateResource2- kann eine Liste von Oberflächen enthalten. Das SurfCount Element der D3DDDIARG_CREATERESOURCE2 Struktur, die durch den pResource2- parameter angegeben wird, gibt die Anzahl der zu erstellenden Oberflächen einschließlich MIP-Kartenebenen an. Beispielsweise enthält eine 256x256x9 Textur-MIP-Map-Ressource eine Liste von neun Oberflächen, auf denen das SurfCount Member und die Anzahl der MIP-Kartenebenen auf 9 festgelegt sind. Eine Cubezuordnung mit neun MIP-Kartenebenen sollte die Anzahl der MIP-Kartenebenen auf 9 und SurfCount- auf 54 festgelegt haben. Eine Swapchain mit drei Oberflächen sollte SurfCount- auf 3 und die Anzahl der MIP-Kartenebenen auf 0 festgelegt sein. Beachten Sie, dass die Anzahl der MIP-Kartenebenen immer kleiner oder gleich dem Wert in SurfCount-ist.
Als Reaktion auf den CreateResource2-aufruf kann der Anzeigetreiber für den Benutzermodus die pfnAllocateCb--Funktion aufrufen, um eine oder mehrere Speicherzuordnungen zu erstellen. Der Anzeigetreiber für den Benutzermodus muss bestimmen, ob er mehrere Zuordnungen pro Oberfläche, eine Zuordnung für alle Oberflächen oder eine Zuordnung pro Oberfläche erstellen muss. Weitere Informationen zu Zuordnungen finden Sie unter Videospeicherverwaltung und GPU-Planung.
Ressourcen können von mehreren Geräten (hDevice) und Prozessen gemeinsam genutzt werden. Die Laufzeit gibt an, dass eine Ressource gemeinsam verwendet wird, indem sie das SharedResource- Bitfeld-Flag im Flags Member von D3DDDIARG_CREATERESOURCE2festlegen. Wenn dieses Bitfeld-Flag festgelegt ist, muss der Anzeigetreiber für den Benutzermodus die folgenden Einschränkungen für freigegebene Ressourcen einhalten:
- Der Anzeigetreiber für den Benutzermodus kann die pfnAllocateCb- aufrufen und pfnDeallocateCb funktionen genau einmal.
- Der Anzeigetreiber für den Benutzermodus kann keine zusätzlichen Zuordnungen für die Ressource erstellen, nachdem die Ressource ursprünglich erstellt wurde, und kann die Ressourcenzuordnungen ebenfalls nur zu dem Zeitpunkt zerstören, zu dem die Ressource selbst zerstört wird.
- Wenn die DestroyResource-Funktion des Benutzers im Benutzermodus für eine freigegebene Ressource aufgerufen wird, die über einen Aufruf der CreateResource2-- oder OpenResource- Funktion des Treibers erstellt oder geöffnet wurde, der Treiber muss das hResource Member der D3DDDICB_DEALLOCATE Struktur auf Nicht-NULL und das NumAllocations-Element von D3DDDICB_DEALLOCATE in einem Aufruf der pfnDeallocateCb--Funktion auf Null festlegen. die Ressource zu zerstören oder zu schließen. Das heißt, Zuordnungen, die einer freigegebenen Ressource zugeordnet sind, können nicht einzeln zerstört oder geschlossen werden; die Ressource muss in einem Aufruf pfnDeallocateCbatomisch zerstört oder geschlossen werden.
- Die Anzahl der Zuordnungen muss für den Ressourcentyp konsistent sein (d. a. ein anderer Prozess, der denselben Ressourcentyp erstellt, sollte dieselbe Anzahl und art von Zuordnungen generieren). Darüber hinaus ist die Umbenennung für diese Ressourcen nicht zulässig.
- Die nicht definierten Bits der Flags Member sind reserviert.
- Wenn das Primäre Bitfeld-Flag nicht in Flagsfestgelegt ist, sind die RefreshRate und Output Member reserviert.
- Wenn das RenderTarget, DecodeRenderTarget-oder VideoProcessRenderTarget Bitfeld-Flag nicht in Flagsfestgelegt ist, werden die MultisampleType- und MultisampleQuality Member reserviert.
- Wenn das VertexBuffer- Bitfeld-Flag nicht in Flagsfestgelegt ist, ist das Fvf Mitglied reserviert.
- Wenn die Texture, CubeMap-und Volume- Bitfeld-Flags nicht in Flagsfestgelegt sind, ist das MipLevels Member reserviert.
Bei einer Systemspeicherressource kann der Display-Miniporttreiber eine Zuordnung um den Systemspeicher umschließen, wenn der Systemspeicher ordnungsgemäß für den direkten Zugriff durch die Grafikverarbeitungseinheit (GPU) ausgerichtet ist. Der Display-Miniporttreiber umschließt eine Zuordnung des Systemspeichers, indem das flag ExistingSysMem im Flags Member der DXGK_ALLOCATIONINFO Struktur festgelegt wird, indem die DxgkDdiCreateAllocation-Funktion verwendet wird. Wenn der Anzeige-Miniporttreiber keine Zuordnung um den Systemspeicher umschließen kann oder der Umbruch fehlschlägt, sollte der Treiber dennoch erfolgreich die Erstellung der Ressource ausführen und die CPU für den Zugriff auf die Ressource verwenden.
Wenn die Laufzeitanforderungen zum Erstellen eines Vertex- oder Indexpuffers und wenn der Anzeigetreiber für den Benutzermodus den Puffer aus anderen Gründen als aus dem Arbeitsspeicher (z. B. fehlender Hardwareunterstützung) nicht erstellen kann, muss der Treiber mit D3DERR_NOTAVAILABLEfehlschlagen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8 |
mindestens unterstützte Server- | Windows Server 2012 |
Zielplattform- | Desktop |
Header- | d3dumddi.h (include D3dumddi.h) |