Share via


D3D11_RESOURCE_FLAGS-Struktur (d3d11on12.h)

Wird mit ID3D11On12Device::CreateWrappedResource verwendet, um Flags zu überschreiben, die von den Ressourceneigenschaften oder Heapeigenschaften abgeleitet werden, einschließlich Bindungsflags, misc-Flags und CPU-Zugriffsflags.

Syntax

typedef struct D3D11_RESOURCE_FLAGS {
  UINT BindFlags;
  UINT MiscFlags;
  UINT CPUAccessFlags;
  UINT StructureByteStride;
} D3D11_RESOURCE_FLAGS;

Member

BindFlags

Bindungsflags müssen entweder vollständig abgeleitet oder vollständig angegeben sein, damit der Grafiktreiber eine allgemeine D3D12-Ressource auf etwas festlegen kann, das D3D11 verstehen kann.

Wenn ein Bindungsflag angegeben wird, das von der bereitgestellten Ressource nicht unterstützt wird, wird ein Fehler zurückgegeben.

Die folgenden Bindungsflags (D3D11_BIND_FLAG Enumerationskonstanten) werden nicht angenommen und müssen angegeben werden, damit eine Ressource auf diese Weise verwendet werden kann:

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
Die folgenden Bindungsflags werden basierend auf dem Vorhandensein des entsprechenden D3D12-Ressourcenflags angenommen und können durch Angeben von Bindungsflags entfernt werden:
  • D3D11_BIND_SHADER_RESOURCE, solange D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE nicht vorhanden ist
  • D3D11_BIND_RENDER_TARGET, wenn D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET vorhanden ist
  • D3D11_BIND_DEPTH_STENCIL, wenn D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL vorhanden ist
  • D3D11_BIND_UNORDERED_ACCESS, wenn D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS vorhanden ist
Ein Renderziel oder ein UAV-Puffer kann umschlossen werden, ohne Flags zu überschreiben. für einen VB/IB/CB/SO-Puffer müssen jedoch Bindungsflags manuell angegeben werden, da diese sich in Direct3D 11 gegenseitig ausschließen.

MiscFlags

Wenn misc-Flags nicht zero sind, werden alle angegebenen Flags or'd in the final resource desc mit abgeleiteten Flags. Misc-Flags können teilweise angegeben werden, um Funktionen hinzuzufügen, aber implizite misc-Flags können nicht maskiert werden.

Die folgenden misc-Flags (D3D11_RESOURCE_MISC_FLAG Enumerationskonstanten) werden nicht angenommen:

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (Konflikte mit CLAMP).
  • D3D11_RESOURCE_MISC_TEXTURECUBE (ändert das Standardverhalten der Ansicht).
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (exklusiv mit einigen Bindungsflags).
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (exklusiv mit anderen UaVs).
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (exklusiv mit anderen UaVs).
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (verbietet D3D10-QIs, Konflikte mit GENERATE_MIPS).
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. Es ist möglich, eine D3D11-Mutex-Ressource mit Schlüsseln zu erstellen, einen freigegebenen Handle für sie zu erstellen und sie über 11on12 oder D3D11 zu öffnen.
Die folgenden misc-Flags werden angenommen und können nicht aus dem erzeugten Ressourcen-Desc entfernt werden. Wenn eine dieser Elemente festgelegt ist und die D3D12-Ressource sie nicht unterstützt, schlägt die Erstellung fehl:
  • D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_NTHANDLE, D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE sind ggf. Heap-Misc-Flags vorhanden.
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE, wenn die D3D12-Ressource GDI-kompatibel ist.
  • D3D11_RESOURCE_MISC_TILED, wenn die D3D12-Ressource über CreateReservedResource erstellt wurde.
  • D3D11_RESOURCE_MISC_TILE_POOL, wenn ein D3D12-Heap übergeben wurde.
Die folgenden falschen Flags sind ungültig, um für diese API anzugeben:
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT, da D3D12 nur Hardwareschutz unterstützt.
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER ist in 12 nicht vorhanden und kann nach der Ressourcenerstellung nicht hinzugefügt werden.
  • D3D11_RESOURCE_MISC_GUARDED soll nur durch einen internen Erstellungsmechanismus festgelegt werden.

CPUAccessFlags

Die CPUAccessFlags werden nicht aus der D3D12-Ressource abgeleitet. Dies liegt daran, dass alle Ressourcen als D3D11_USAGE_DEFAULT behandelt werden, sodass CPUAccessFlags eine Überprüfung erzwingt, die die Zuordnung von Standardpuffern oder Texturen vorausnimmt. Umschlossene Ressourcen unterstützen Map(DISCARD) nicht. Umschlossene Ressourcen unterstützen Map(NO_OVERWRITE) nicht, dies kann jedoch implementiert werden, indem stattdessen die zugrunde liegende D3D12-Ressource zugeordnet wird. Wenn Sie einen Kartenaufruf für eine umschlossene Ressource ausgeben, werden alle D3D11-Arbeiten synchronisiert, die für diese Ressource übermittelt werden, es sei denn, das DO_NOT_WAIT-Flag wurde verwendet.

StructureByteStride

Die Größe jedes Elements in der Pufferstruktur (in Bytes), wenn der Puffer einen strukturierten Puffer darstellt.

Hinweise

Verwenden Sie diese Struktur mit CreateWrappedResource.

Anforderungen

Anforderung Wert
Header d3d11on12.h

Weitere Informationen

11on12-Strukturen