Compartir a través de


estructura D3D11_RESOURCE_FLAGS (d3d11on12.h)

Se usa con ID3D11On12Device::CreateWrappedResource para invalidar las marcas inferidas por las propiedades de recurso o las propiedades del montón, incluidas las marcas de enlace, las marcas incorrectas y las marcas de acceso de CPU.

Sintaxis

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

Miembros

BindFlags

Las marcas de enlace deben ser inferidas completamente o completamente especificadas para permitir que el controlador de gráficos de ámbito de un recurso D3D12 general sea algo que D3D11 pueda entender.

Si se especifica una marca de enlace que no es compatible con el recurso proporcionado, se devolverá un error.

No se presuponen las marcas de enlace siguientes (D3D11_BIND_FLAG constantes de enumeración) y se deben especificar para que se use un recurso de tal manera:

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
Se asumen las marcas de enlace siguientes en función de la presencia de la marca de recurso D3D12 correspondiente y se pueden quitar especificando marcas de enlace:
  • D3D11_BIND_SHADER_RESOURCE, siempre que D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE no esté presente
  • D3D11_BIND_RENDER_TARGET, si D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET está presente
  • D3D11_BIND_DEPTH_STENCIL, si D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL está presente
  • D3D11_BIND_UNORDERED_ACCESS, si D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS está presente
Un destino de representación o un búfer UAV se pueden encapsular sin invalidar marcas; pero un búfer VB/IB/CB/SO debe tener marcas de enlace especificadas manualmente, ya que se excluyen mutuamente en Direct3D 11.

MiscFlags

Si las marcas incorrectas no son cero, las marcas especificadas serán OR en el último desc del recurso con marcas inferidas. Las marcas incorrectas se pueden especificar parcialmente para agregar funcionalidad, pero las marcas incorrectas que están implícitas no se pueden enmascarar.

No se presuponen las siguientes marcas incorrectas (D3D11_RESOURCE_MISC_FLAG constantes de enumeración):

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (entra en conflicto con CLAMP).
  • D3D11_RESOURCE_MISC_TEXTURECUBE (modifica el comportamiento predeterminado de la vista).
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (exclusivo con algunas marcas de enlace).
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (exclusivo con otros tipos de UAV).
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (exclusivo con otros tipos de UAV).
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (prohíbe las QIs D3D10, entra en conflicto con GENERATE_MIPS).
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. Es posible crear un recurso de exclusión mutua con clave D3D11, crear un identificador compartido para él y abrirlo a través de 11on12 o D3D11.
Se presuponen las siguientes marcas incorrectas y no se pueden quitar de la desc del recurso generado. Si se establece una de estas opciones y el recurso D3D12 no lo admite, se producirá un error en la creación:
  • D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_NTHANDLE, D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE, si hay marcas incorrectas de montón adecuadas.
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE, si el recurso D3D12 es compatible con GDI.
  • D3D11_RESOURCE_MISC_TILED, si se creó el recurso D3D12 mediante CreateReservedResource.
  • D3D11_RESOURCE_MISC_TILE_POOL, si se pasó un montón D3D12.
Las siguientes marcas incorrectas no son válidas para especificar para esta API:
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT, ya que D3D12 solo admite la protección de hardware.
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER no existe en 12 y no se puede agregar después de la creación de recursos.
  • D3D11_RESOURCE_MISC_GUARDED solo está pensado para establecerse mediante un mecanismo de creación interno.

CPUAccessFlags

CpuAccessFlags no se deduce del recurso D3D12. Esto se debe a que todos los recursos se tratan como D3D11_USAGE_DEFAULT, por lo que CPUAccessFlags fuerza la validación, que supone la asignación de búferes predeterminados o texturas. Los recursos ajustados no admiten Map(DISCARD). Los recursos encapsulados no admiten Map(NO_OVERWRITE), pero se pueden implementar mediante la asignación del recurso D3D12 subyacente en su lugar. La emisión de una llamada de asignación en un recurso ajustado se sincronizará con todo el trabajo D3D11 enviado en ese recurso, a menos que se use la marca DO_NOT_WAIT.

StructureByteStride

Tamaño de cada elemento de la estructura del búfer (en bytes) cuando el búfer representa un búfer estructurado.

Comentarios

Use esta estructura con CreateWrappedResource.

Requisitos

Requisito Valor
Header d3d11on12.h

Consulte también

Estructuras de 11on12