D3D12DDI_BARRIER_LAYOUT enumeração (d3d12umddi.h)

Um valor D3D12DDI_BARRIER_LAYOUT descreve os possíveis layouts usados pelos sub-recursos D3D12 em relação às barreiras de textura. Os layouts se aplicam somente aos recursos de textura.

Syntax

typedef enum D3D12DDI_BARRIER_LAYOUT {
  D3D12DDI_BARRIER_LAYOUT_UNDEFINED,
  D3D12DDI_BARRIER_LAYOUT_COMMON,
  D3D12DDI_BARRIER_LAYOUT_PRESENT,
  D3D12DDI_BARRIER_LAYOUT_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET,
  D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
  D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST,
  D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE,
  D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
} ;

Constantes

 
D3D12DDI_BARRIER_LAYOUT_UNDEFINED
Fornece suporte para alterações de layout de sub-recurso em que o layout anterior é irrelevante ou indefinido. Normalmente, isso é usado para comandos Clear, Discard e Copy de recursos completos ou de sub-recurso completo.

Uma transição de layout com LayoutBefore e LayoutAfter definidos como D3D12_BARRIER_LAYOUT_UNDEFINED indica uma barreira somente de acesso à memória. Muitas operações de leitura/gravação dão suporte a D3D12_BARRIER_LAYOUT_COMMON. Em particular, os comandos Copy podem gravar em texturas usando o D3D12_BARRIER_LAYOUT_COMMON ou D3D12_BARRIER_LAYOUT_COPY. Uma barreira somente de acesso à memória pode ser usada para liberar gravações de cópia em uma textura sem alterar o layout da textura.
D3D12DDI_BARRIER_LAYOUT_COMMON
Esse é o layout usado pelo D3D12_RESOURCE_STATE_COMMON. Os sub-recursos com esse layout são legíveis em qualquer tipo de fila sem a necessidade de uma alteração de layout. Eles também podem ser gravados como um destino de cópia em qualquer tipo de fila.

A apresentação da cadeia de troca requer que o buffer de fundo esteja usando D3D12_BARRIER_LAYOUT_COMMON.
D3D12DDI_BARRIER_LAYOUT_PRESENT
Alias para D3D12_BARRIER_LAYOUT_COMMON.
D3D12DDI_BARRIER_LAYOUT_GENERIC_READ
Fornece suporte para qualquer acesso somente leitura (por exemplo: SHADER_RESOURCE, COPY_SOURCE). Esse valor só deve ser usado para texturas que exigem vários acessos de leitura simultâneos, pois isso pode não ser tão ideal quanto um layout de leitura mais específico.
D3D12DDI_BARRIER_LAYOUT_RENDER_TARGET
Corresponde ao layout usado por D3D12_RESOURCE_STATE_RENDER_TARGET.
D3D12DDI_BARRIER_LAYOUT_UNORDERED_ACCESS
Corresponde ao layout usado por D3D12_RESOURCE_STATE_UNORDERED_ACCESS.
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_DEPTH_WRITE.
D3D12DDI_BARRIER_LAYOUT_DEPTH_STENCIL_READ
Corresponde ao layout usado por D3D12_RESOURCE_STATE_DEPTH_READ.
D3D12DDI_BARRIER_LAYOUT_SHADER_RESOURCE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE e D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
D3D12DDI_BARRIER_LAYOUT_COPY_SOURCE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_COPY_SOURCE.
D3D12DDI_BARRIER_LAYOUT_COPY_DEST
Corresponde ao layout usado por D3D12_RESOURCE_STATE_COPY_DEST.
D3D12DDI_BARRIER_LAYOUT_RESOLVE_SOURCE
Corresponde ao layout usado por D3D12DDI_RESOURCE_STATE_RESOLVE_SOURCE.
D3D12DDI_BARRIER_LAYOUT_RESOLVE_DEST
Corresponde ao layout usado por D3D12DDI_RESOURCE_STATE_RESOLVE_DEST.
D3D12DDI_BARRIER_LAYOUT_SHADING_RATE_SOURCE
Corresponde ao layout usado por D3D12DDI_RESOURCE_STATE_0062_SHADING_RATE_SOURCE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_READ
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_DECODE_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_DECODE_WRITE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_READ
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE.
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_READ
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ.
D3D12DDI_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE
Corresponde ao layout usado por D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON
Dá suporte ao uso comum (sem barreiras) somente em filas diretas. Esse valor é mais ideal do que o D3D12DDI_BARRIER_LAYOUT_COMMON mais geral. Só pode ser usado em barreiras em filas diretas.

Observe que isso não pode ser usado para Presente. D3D12_BARRIER_LAYOUT_COMMON (também conhecido como D3D12_BARRIER_LAYOUT_PRESENT) ainda é o layout necessário para Apresentação.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ
O mesmo que D3D12_BARRIER_LAYOUT_GENERIC_READ exceto com otimizações específicas para filas diretas. Só pode ser usado em barreiras em filas diretas.

Além disso, D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ inclui suporte para profundidade somente leitura, fonte de taxa de sombreamento e acessos de origem resolve em filas diretas.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS
O mesmo que D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS , exceto com otimizações específicas para filas diretas. Só pode ser usado em barreiras em filas diretas.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE
O mesmo que D3D12_BARRIER_LAYOUT_SHADER_RESOURCE , exceto com otimizações específicas para filas diretas. Só pode ser usado em barreiras em filas diretas.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE
O mesmo que D3D12_BARRIER_LAYOUT_COPY_SOURCE , exceto com otimizações específicas para filas diretas. Só pode ser usado em barreiras em filas diretas.
D3D12DDI_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST
O mesmo que D3D12_BARRIER_LAYOUT_COPY_DEST , exceto com otimizações específicas para filas diretas. Só pode ser usado em barreiras em filas diretas. Pode evitar a descompactação dispendiosa e desnecessária em algumas transições de layout em recursos com o próximo acesso em uma fila direta.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON
Dá suporte ao uso comum (sem barreiras) somente em filas de computação. Pode ser mais ideal do que o D3D12_BARRIER_LAYOUT_COMMON mais geral. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ
O mesmo que D3D12_BARRIER_LAYOUT_GENERIC_READ , exceto com otimizações específicas para filas de computação. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS
O mesmo que D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS , exceto com otimizações específicas para filas de computação. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE
O mesmo que D3D12_BARRIER_LAYOUT_SHADER_RESOURCE , exceto com otimizações específicas para filas de computação. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE
O mesmo que D3D12_BARRIER_LAYOUT_COPY_SOURCE , exceto com otimizações específicas para filas de computação. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST
O mesmo que D3D12_BARRIER_LAYOUT_COPY_DEST , exceto com otimizações específicas para filas de computação. Só pode ser usado em barreiras em filas de computação.
D3D12DDI_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON
Dá suporte ao uso comum (sem barreiras) somente em filas de vídeo. Pode ser mais ideal do que o D3D12_BARRIER_LAYOUT_COMMON mais geral. Só pode ser usado em barreiras em filas de vídeo.
D3D12DDI_BARRIER_LAYOUT_LEGACY_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE
Dá suporte a um estado de recurso herdado traduzido internamente. Nenhuma APIs de barreira aprimorada é mapeada para esse valor.
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_SOURCE
Dá suporte a um estado de recurso herdado traduzido internamente. Nenhuma APIs de barreira aprimorada é mapeada para esse valor.
D3D12DDI_BARRIER_LAYOUT_LEGACY_COPY_DEST
Dá suporte a um estado de recurso herdado traduzido internamente. Nenhuma APIs de barreira aprimorada é mapeada para esse valor.
D3D12DDI_BARRIER_LAYOUT_LEGACY_SHADER_RESOURCE
Dá suporte a um estado de recurso herdado traduzido internamente. Nenhuma APIs de barreira aprimorada é mapeada para esse valor.
D3D12DDI_BARRIER_LAYOUT_LEGACY_PIXEL_SHADER_RESOURCE
Dá suporte a um estado de recurso herdado traduzido internamente. Nenhuma APIs de barreira aprimorada é mapeada para esse valor.

Comentários

Os recursos de buffer têm apenas um layout linear, independentemente do tipo de acesso.

Os layouts de recurso devem ser compatíveis com o tipo de fila que executa a transição de layout.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11 (WDDM 3.0)
Cabeçalho d3d12umddi.h

Confira também

D3D12DDI_TEXTURE_BARRIER_0088