Sintaxe
typedef enum D3D12_RESOURCE_FLAGS
{
D3D12_RESOURCE_FLAG_NONE = 0,
D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
D3D12XBOX_RESOURCE_FLAG_PREFER_INDEX_BUFFER = 0x10000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER = 0x20000,
D3D12XBOX_RESOURCE_FLAG_PREFER_INDIRECT_BUFFER = D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER,
D3D12XBOX_RESOURCE_FLAG_PREFER_PREDICATION_BUFFER = 0x40000,
D3D12XBOX_RESOURCE_FLAG_PREFER_STREAM_OUTPUT = 0x80000,
D3D12XBOX_RESOURCE_FLAG_DENY_COMPRESSION_DATA = 0x300000,
D3D12XBOX_RESOURCE_FLAG_DENY_COLOR_COMPRESSION_DATA = 0x100000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA = 0x100000,
D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA = 0x200000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_DCC = 0x400000,
D3D12XBOX_RESOURCE_FLAG_FORCE_TEXTURE_COMPATIBILITY = 0x00800000,
D3D12XBOX_RESOURCE_FLAG_FORCE_DCC_TEXTURE_COMPATIBILITY = 0x00000100,
D3D12XBOX_RESOURCE_FLAG_FORCE_HTILE_TEXTURE_COMPATIBILITY = 0x00000100,
D3D12XBOX_RESOURCE_FLAG_FORCE_FMASK_TEXTURE_COMPATIBILITY = 0x00000200,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR = 0x1000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_PLANES = 0x2000000,
D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_SMEM = 0x4000000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP = 0x40000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_STENCIL_HTILE = 0x80000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_EXPCLEAR = D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR,
} D3D12_RESOURCE_FLAGS
Constantes
| Constante | Descrição |
|---|---|
| D3D12_RESOURCE_FLAG_NONE | Nenhuma opção é especificada. |
| D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET | Permite que uma exibição de destino de renderização seja criada para o recurso e permite que o recurso faça a transição para o estado D3D12_RESOURCE_STATE_RENDER_TARGET. Para reduzir a largura de banda efetiva durante a renderização comum, algumas arquiteturas de adaptador alocam memória extra para texturas com esse sinalizador. Essa característica pode não ser benéfica para texturas que nunca são renderizadas, nem está disponível para texturas compactadas com formatos BC. Os aplicativos não devem definir esse sinalizador se a renderização nunca ocorrer. As seguintes restrições e interações se aplicam:
|
| D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL | Permite que uma exibição de profundidade/estêncil seja criada para o recurso e permite que o recurso faça a transição para o estado D3D12_RESOURCE_STATE_DEPTH_WRITE ou D3D12_RESOURCE_STATE_DEPTH_READ. A maioria das arquiteturas de adaptador aloca memória extra para texturas com esse sinalizador, para reduzir a largura de banda efetiva e maximizar as otimizações para o teste de profundidade antecipado. Os aplicativos não devem definir esse sinalizador se as operações de profundidade nunca ocorrerem. As seguintes restrições e interações se aplicam:
|
| D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS | Permite que uma exibição de acesso não ordenado seja criada para o recurso e permite que o recurso faça a transição para o estado D3D12_RESOURCE_STATE_UNORDERED_ACCESS. Para fornecer essa funcionalidade, algumas arquiteturas de adaptador precisam recorrer a layouts de textura menos eficientes. Se uma textura raramente for usada para acesso não ordenado, considere ter duas texturas e copiar entre elas; uma textura teria esse sinalizador e a outra não. Os aplicativos não devem definir esse sinalizador se as operações de acesso não ordenado nunca ocorrerem. As seguintes restrições e interações se aplicam:
|
| D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE | Não permite a criação de uma exibição de recurso de sombreador para o recurso e desabilita a transição do recurso para o estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE ou D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE. Quando as exibições de recurso de sombreador são impedidas, algumas arquiteturas de adaptador apresentam aumento de largura de banda para texturas de profundidade/estêncil. Se uma textura raramente for usada como recurso de sombreador, considere ter duas texturas e copiar entre elas; uma textura teria esse sinalizador definido e a outra não. Os aplicativos devem definir esse sinalizador quando as texturas de profundidade/estêncil nunca forem usadas a partir de exibições de recurso de sombreador. Essa constante deve ser usada com D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. |
| D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER | Permite que o recurso seja usado para dados entre adaptadores e para os recursos habilitados por ALLOW_SIMULTANEOUS_ACCESS. Recursos entre adaptadores normalmente impedem o uso de técnicas que reduzem a largura de banda efetiva de textura durante o uso, e algumas arquiteturas de adaptador podem exigir um comportamento de cache diferente. Os aplicativos não devem definir esse sinalizador se os dados do recurso nunca forem usados com outro adaptador. As seguintes restrições e interações se aplicam:
|
| D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS | Permite que um recurso seja acessado simultaneamente por várias filas, dispositivos ou processos diferentes. Por exemplo, esse recurso permite que um recurso seja usado com transições de ResourceBarrier executadas em várias listas de comandos em execução ao mesmo tempo. O acesso simultâneo permite vários leitores e um gravador, desde que o gravador não modifique simultaneamente os texels que outros leitores estão acessando. Algumas arquiteturas de adaptador não conseguem aproveitar técnicas para reduzir a largura de banda efetiva de textura durante o uso. No entanto, os aplicativos não devem definir esse sinalizador se vários leitores não forem necessários durante gravações frequentes e sem sobreposição em texturas. O uso desse sinalizador pode comprometer a capacidade das fences de recurso de realizar esperas e impede o uso de qualquer compactação com um recurso. As seguintes restrições e interações se aplicam:
|
| D3D12XBOX_RESOURCE_FLAG_PREFER_INDEX_BUFFER | Marca o recurso como tendo preferência por ser um buffer de índice. |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER | Permite que o recurso seja um buffer indireto. Esse sinalizador é necessário para criar buffers indiretos. |
| D3D12XBOX_RESOURCE_FLAG_PREFER_INDIRECT_BUFFER | Marca o recurso como tendo preferência por ser um buffer indireto. |
| D3D12XBOX_RESOURCE_FLAG_PREFER_PREDICATION_BUFFER | Marca o recurso como tendo preferência por ser um buffer de predicação. |
| D3D12XBOX_RESOURCE_FLAG_PREFER_STREAM_OUTPUT | Marca o recurso como tendo preferência por ser usado para saída de fluxo (SO). |
| D3D12XBOX_RESOURCE_FLAG_DENY_COMPRESSION_DATA | Nega ao recurso a capacidade de usar metadados de compactação de todos os tipos. Esse sinalizador impede a criação de superfícies de metadados CMask e FMask para recursos de destino de renderização. Esse sinalizador não impede a criação da superfície de metadados HTile para recursos de profundidade/estêncil. |
| D3D12XBOX_RESOURCE_FLAG_DENY_COLOR_COMPRESSION_DATA | Nega ao recurso a capacidade de usar dados de compactação de cor. Esse sinalizador impede a criação de superfícies de metadados CMask e FMask para recursos de destino de renderização. |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA | Nega ao recurso a capacidade de usar metadados de compactação de profundidade. Esse sinalizador não impede a criação da superfície de metadados HTile para recursos de profundidade/estêncil. Se um dos sinalizadores de criação de recurso D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA ou D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA for especificado, as limpezas por computação serão desabilitadas. Se ambos forem especificados, as limpezas rápidas serão desabilitadas. |
| D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA | Nega ao recurso a capacidade de usar metadados de compactação de estêncil. Esse sinalizador não impede a criação da superfície de metadados HTile para recursos de profundidade/estêncil. Se um dos sinalizadores de criação de recurso D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA ou D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA for especificado, as limpezas por computação serão desabilitadas. Se ambos forem especificados, as limpezas rápidas serão desabilitadas. |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_DCC | Habilita a Delta Color Compression (DCC) em recursos de destino de renderização de cor compatíveis. No XBOX Series X|S, isso também pode ser aplicado a recursos de troca. Aplicável ao XBOX Series X|S e ao XBOX One X, mas sem suporte no XBOX One ou no XBOX One S. |
| D3D12XBOX_RESOURCE_FLAG_FORCE_TEXTURE_COMPATIBILITY | Habilita a amostragem de textura de recursos compactados compatíveis, incluindo recursos de destino de renderização de cor e recursos de destino de profundidade compatíveis. Aplicável ao XBOX Series X|S e ao XBOX One X, mas sem suporte no XBOX One ou no XBOX One S. |
| D3D12XBOX_RESOURCE_FLAG_FORCE_DCC_TEXTURE_COMPATIBILITY | A definir |
| D3D12XBOX_RESOURCE_FLAG_FORCE_HTILE_TEXTURE_COMPATIBILITY | A definir |
| D3D12XBOX_RESOURCE_FLAG_FORCE_FMASK_TEXTURE_COMPATIBILITY | A definir |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR | Buffers de profundidade que terão aliases criados por outros recursos devem usar este sinalizador! Nega ao HTile a capacidade de usar o valor “expandido e limpo” para a zMask. Esse sinalizador permite que o valor de zMask “15 planos Z” seja usado no HTile, potencialmente proporcionando uma pequena economia de largura de banda em alguns casos, ao custo de tempos de descompactação mais longos nos casos em que muitos blocos não são gravados, mas já estão expandidos. Esse sinalizador pode ajudar em cenários de aliasing de recursos de profundidade/estêncil em que o conteúdo anterior da memória pode conter o padrão de bits para “expandido e limpo” e ClearDepthStencilView ignoraria a limpeza dos blocos que têm esse valor. Para resolver esse problema, chame DiscardResource para reinicializar os metadados ou especifique esse sinalizador. |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_PLANES | Nega ao HTile a capacidade de armazenar informações de plano z na zMask. Os blocos serão expandidos em gravações de DB (sem limpeza). A descompactação ainda deve ser usada para gravar blocos não tocados desde a limpeza quando eles não estiverem em um estado expclear. |
| D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_SMEM | Nega ao HTile a capacidade de armazenar informações de estêncil na sMem. Os blocos serão expandidos em gravações de DB (sem limpeza). |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP | Habilita o mapeamento de tons SDR automático do buffer de troca HDR de um jogo HDR. A imagem SDR é usada para gravar clipes SDR do Game DVR ou para transmitir para monitores SDR. Isso gera custo adicional de GPU e memória, pois o driver gráfico aloca automaticamente buffers para uma cadeia de troca extra e injeta um sombreador de computação logo antes da chamada de apresentação. Esse sinalizador não é aplicável aos consoles XBOX Series X|S. No XBOX Series X|S, o mapeador de tons SDR automático é executado no hardware de vídeo, o que não gera custo de GPU nem de memória. Para o XBOX Series X|S, o mapeador de tons de hardware é habilitado simplesmente não definindo esse sinalizador. O HDR não é compatível com o XBOX One; portanto, esse sinalizador só é aplicável ao XBOX One S e ao XBOX One X. |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_STENCIL_HTILE | Impede a criação de uma superfície de metadados HTile com um recurso de profundidade/estêncil. Esse sinalizador implica efetivamente todos os sinalizadores D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH e D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL, já que os dados relevantes residem no HTile. |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_EXPCLEAR | Alias para D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR. |
