D3D12DDI_VIDEO_DECODE_TIER_0020 enumeração (d3d12umddi.h)

Especifica a camada de decodificação de vídeo. Decodificar camadas de vídeo define um conjunto de recursos de hardware. Quanto maior a camada, mais capaz o hardware.

Syntax

typedef enum D3D12DDI_VIDEO_DECODE_TIER_0020 {
  D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED,
  D3D12DDI_VIDEO_DECODE_TIER_0020_1,
  D3D12DDI_VIDEO_DECODE_TIER_0020_2,
  D3D12DDI_VIDEO_DECODE_TIER_0020_3
} ;

Constantes

 
D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED
Não há suporte para o perfil de decodificação.
D3D12DDI_VIDEO_DECODE_TIER_0020_1
Camada 1 de decodificação de vídeo. Na camada 1 de decodificação de vídeo, o hardware requer a decodificação de texturas de saída e texturas de referência para que a decodificação de um fluxo seja fisicamente contígua quando as operações de vídeo fazem referência a elas.

Os recursos de referência são alocados pelo aplicativo como uma matriz de textura D3D12. O driver não recebe dicas explícitas de que a alocação tem como destino cenários de vídeo e pode inicialmente alocar memória não fisicamente contígua. Espera-se que os drivers usem um novo recurso Propriedades de Alocação de Atualização fornecido pelo gerenciador de memória para agendar uma conversão para fisicamente contíguo após o envio do trabalho de vídeo que realmente exige que ele seja fisicamente contíguo.

Características de hardware que colocam o hardware na Camada 1:

* O hardware de decodificação requer memória fisicamente contígua para decodificar a saída e as referências. Buffers de entrada com o bitstream compactado também podem exigir fisicamente contíguo.

* O hardware de decodificação pode ter um formato de bloco especial ou outra definição de layout de memória incompatível com outros mecanismos ou operações de vídeo.

Requisitos do buffer de entrada compactado:

* Todas as fatias de um determinado quadro devem ser colocadas em ordem e contíguas (sem lacunas entre fatias).

* Os drivers não devem executar cópias adicionais dos dados de bitstream.

* A primeira fatia deve começar em um limite de 128 bytes.

* O hardware deve dar suporte à decodificação de um buffer alocado de D3D12DDI_MEMORY_POOL_L0 (sempre memória do sistema).

* O hardware deve dar suporte à decodificação de D3D12DDI_MEMORY_POOL_L1 (pool padrão) com D3D12DDI_CPU_PAGE_PROPERTY_NOT_AVAILABLE.
D3D12DDI_VIDEO_DECODE_TIER_0020_2
Camada 2 de decodificação de vídeo. A camada de decodificação 2 permite que o chamador aloque texturas de referência e saída como recursos de textura 2D separados. O aplicativo não é mais necessário para alocar matrizes de textura, mas isso deve ter suporte.

Decodificar a Camada 2 não tem requisitos fisicamente contíguos. O hardware pode ter requisitos contíguos de VA (aceleração de decodificação de vídeo) nessa camada, e os aplicativos são necessários para criar uma matriz de textura para dar suporte a isso.

Para habilitar a Camada 2, os recursos reservados, também chamados de recursos lado a lado ou esparsos, devem ter suporte para os formatos de referência e saída compatíveis com o driver. Isso pode ser feito de duas maneiras:

* Se o hardware tiver suporte para VA de GPU por processo e tiver um padrão de bloco que dê suporte aos requisitos de forma de bloco de recursos reservados, o mecanismo de recurso lado a lado D3D12 pré-existente poderá ser usado.

* Se o hardware tiver suporte para VA de GPU por processo, mas o padrão de bloco não estiver em conformidade com os requisitos de forma de bloco de recursos reservados, e o hardware puder dar suporte a um mapeamento de bloco que mapeia e descompacta blocos para um sub-recurso inteiro, para cada plano de um recurso planar que é um sub-recurso separado em D3D12, o mecanismo exige que eles possam ser mapeados em bloco e não mapeados independentemente. Observe que esse mecanismo está em desenvolvimento, mas ofuscará a forma do bloco na API.

Características de hardware que colocam o hardware na Camada 2:

* Não requer memória fisicamente contígua.

* O hardware tem um requisito contíguo de VA.

* O hardware de decodificação pode ter um formato de bloco especial ou outra definição de layout de memória incompatível com outros mecanismos ou operações de vídeo.

Os requisitos do buffer de entrada compactado são os mesmos da Camada 1.
D3D12DDI_VIDEO_DECODE_TIER_0020_3
Camada 3 de decodificação de vídeo. Essa camada tem suporte iniciada no WDDM 2.3.

Decodificar Camada 3 permite que o chamador aloque texturas de referência e saída como recursos de textura 2D padrão. O aplicativo não é mais necessário para alocar matrizes de textura, mas isso deve ter suporte.

Decodificar a Camada 3 não requer alocações fisicamente contíguas. O hardware não deve mais exigir o D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY, mas ainda deve dar suporte a ele. Quando consultado, o membro D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY da estrutura D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 deve ser definido como FALSE.

Para habilitar a Camada 3, os recursos reservados (também chamados de recursos lado a lado ou esparsos) devem ter suporte para os formatos de referência e saída compatíveis com o driver. Isso pode acontecer de dois modos:

* Se o hardware tiver suporte para VA de GPU por processo e tiver um padrão de bloco que dê suporte aos requisitos de forma de bloco de recursos reservados, o mecanismo de recurso lado a lado D3D12 pré-existente poderá ser usado.

* Se o hardware tiver suporte para VA de GPU por processo, mas o padrão de bloco não estiver em conformidade com os requisitos de forma de bloco de recursos reservados, e o hardware puder dar suporte a um mapeamento de bloco que mapeia e descompacta blocos para um sub-recurso inteiro, para cada plano de um recurso planar que é um sub-recurso separado em D3D12, o mecanismo exige que eles possam ser mapeados em bloco e não mapeados independentemente. Observe que esse mecanismo está em desenvolvimento, mas ofuscará a forma do bloco na API.

Os requisitos do buffer de entrada compactado são os mesmos da Camada 1.

Comentários

Se o hardware de decodificação exigir um formato de bloco exclusivo que não tenha suporte para operações em outros mecanismos ou operações de vídeo diferentes, o decodificador poderá definir D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY na estrutura D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020 ao consultar o suporte ao perfil. Esse sinalizador indica que o aplicativo deve alocar referências com o sinalizador D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY. Se a saída for necessária como um quadro de referência futuro, o quadro de saída passado para PFND3D12DDI_VIDEO_DECODE_FRAME será um recurso D3D12 que pode ser consumido por outras partes do pipeline e não deve ter o sinalizador D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY.

A tabela a seguir mostra os diferentes recursos para cada camada:

Funcionalidade Camada 1 Camada 2 Nível 3
Dá suporte a quadros de referência e saída alocados individualmente. No No Obrigatório
Dá suporte a referências e alocado como uma matriz de textura. Obrigatório Obrigatório Obrigatório
Opcionalmente, pode exigir o sinalizador de recurso REFERENCE_ONLY. Observe que todas as camadas são necessárias para trabalhar com o sinalizador presente, mesmo quando não é necessário. Opcional Opcional Não
Suporte para referências alocadas com REFERENCE_ONLY, mesmo quando os limites não o exigem. Obrigatório Obrigatório Obrigatório
Dá suporte a recursos lado a lado/esparsos para referências, entrada e saída. No Obrigatório Obrigatório
Os buffers de entrada de fluxo de bits compactados podem ser alocados como L0 (main memória do sistema) ou L1 (para dGPU, memória de vídeo). Obrigatório Obrigatório Obrigatório
Requer dados de bitstream compactados para que as fatias estejam localizadas em uma única alocação de buffer sem lacunas entre fatias. Obrigatório Obrigatório Obrigatório
O deslocamento para a primeira fatia no buffer de entrada compactado deve estar alinhado a 256 bytes. Obrigatório Obrigatório Obrigatório
Os drivers não devem executar cópias adicionais dos dados de bitstream compactados. Obrigatório Obrigatório Obrigatório

Requisitos

Requisito Valor
Cabeçalho d3d12umddi.h (inclua D3d12umddi.h)