Melhorias de desempenho de renderização do Direct3D

Os drivers WDDM (Modelo de Driver de Exibição do Windows) 1.3 e posteriores podem dar suporte a melhorias de desempenho de renderização do Microsoft Direct3D que permitem que o hardware direct3D 9 faça melhor uso de buffers e contadores de comando de hardware e faça cópias eficientes da memória do sistema para sub-recursos. Esses recursos, que espelho alguns dos recursos disponíveis para hardware direct3D versão 10, são novos começando com Windows 8.1.

Novos recursos do Direct3D 11.1 e melhorias de desempenho padrão do mapa também estão disponíveis. O cenário padrão do mapa é descrito na seção Alterações de comportamento abaixo.

Referência de desempenho de renderização

Esta seção de referência descreve as DDIs (interfaces de driver de dispositivo) do modo de usuário.

Funções de desempenho de renderização direct3D implementadas pelo driver de modo de usuário

Esta seção contém funções que um driver de exibição WDDM (Modelo de Driver de Exibição do Windows) 1.3 e posterior implementa para dar suporte a melhorias no desempenho de renderização do Microsoft Direct3D.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Enumerações e estruturas de desempenho de renderização direct3D

Essas estruturas e enumerações do modo de usuário dão suporte a melhorias de desempenho de renderização e são novas ou atualizadas para Windows 8.1. Todos se aplicam a drivers direct3D nível 9, exceto para D3D11_1_DDI_FLUSH_FLAGS.

Requisitos de implementação de DDI começando com o WDDM 1.3

A partir do WDDM 1.3, as funções a seguir são necessárias ou opcionais para que os drivers do modo de usuário implementem.

Grupo de funções Descrição

Funções do Direct3D 9 que são opcionais antes do WDDM 1.3. Agora é necessário:

Funções do Direct3D 9 que estão disponíveis a partir do WDDM 1.3. Um driver deve implementar todas essas funções ou nenhuma delas:

Quando o WDDM 1.3 e funções opcionais posteriores imediatamente acima são implementados, essas funções têm alterações de comportamento associadas:

Esses cenários se aplicam quando GetCaps é chamado:

  • Se D3DDDICAPS_GETD3DQUERYDATA estiver definido, o driver poderá, opcionalmente, relatar suporte para carimbos de data/hora, o que significa que o runtime do Direct3D não mascara o suporte.
  • Se D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT estiver definido, o driver poderá relatar suporte opcional de hardware para instanciação.

Essas funções do Direct3D 11 têm alterações de comportamento associadas:

  • CreateResource(D3D11) — padrão do mapa de buffer (consulte a seção Alterações de comportamento abaixo)
  • pfnFlush1 — corte de recursos
  • ResourceMap — padrão do mapa do buffer (consulte a seção Alterações de comportamento abaixo)
  • ResourceUnmap — padrão do mapa do buffer (consulte a seção Alterações de comportamento abaixo)

Alterações de comportamento para chamadas para funções de criação, mapa e unmap de recursos

Para essas funções implementadas por drivers WDDM 1.3 e posteriores, o runtime do Direct3D fornece um conjunto restrito de valores de entrada para o cenário padrão do mapa. Esses valores restritos se aplicam somente a drivers que dão suporte ao nível de recurso 11.1 e posterior.

Função CreateResource(D3D11)

Esses membros da estrutura de D3D11DDIARG_CREATERESOURCE de entrada são restritos:

Membro Descrição

ResourceDimension e Usage

Essas alterações de comportamento só se aplicam quando o runtime do Direct3D fornece o tipo D3D10DDIRESOURCE_BUFFER para ResourceDimension e digite D3D10_DDI_USAGE_DEFAULT for Usage.

BindFlags

O runtime do Direct3D define apenas os valores D3D10_DDI_BIND_SHADER_RESOURCE e D3D11_DDI_BIND_UNORDERED_ACCESS .

MapFlags

Se todos os outros requisitos de membro listados aqui forem atendidos, o runtime poderá definir valores D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE e D3D10_DDI_MAP_READWRITE . O driver deve dar suporte a esses valores. Os valores de D3D10_DDI_MAP_WRITE_DISCARD e D3D10_DDI_MAP_WRITE_NOOVERWRITE são inválidos.

MiscFlags

O runtime define apenas os valores D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS e D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED .

Formato

O runtime define apenas o valor DXGI_FORMAT_UNKNOWN .

SampleDesc

O runtime define o DXGI_SAMPLE_DESC. Conte membro como 1 e o membro Quality como zero.

MipLevels

O runtime define o valor como 1.

ArraySize

O runtime define o valor como 1.

pPrimaryDesc

O runtime define o valor como NULL.

Função ResourceMap

Esses parâmetros de entrada para ResourceMap são restritos:

Parâmetro Descrição

hResource

O runtime do Direct3D define apenas um recurso D3D10DDIRESOURCE_BUFFER quando um valor diferente de zero para MapFlags é definido na chamada de criação para CreateResource(D3D11).

O runtime define apenas o valor DXGI_FORMAT_UNKNOWN .

Sub-recurso

O runtime define apenas o valor como 0.

DDIMap

Se todos os outros requisitos de membro listados aqui forem atendidos, o runtime poderá definir valores D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE ou D3D10_DDI_MAP_READWRITE , correspondendo ao valor MapFlags definido na chamada de criação para CreateResource(D3D11).

Sinalizadores

Embora o valor de entrada do runtime não seja restrito, o driver deve ser capaz de dar suporte ao valor D3D10_DDI_MAP_FLAG_DONOTWAIT .

pMappedSubResource

Embora o valor de entrada do runtime não seja restrito, o driver deve atribuir um ponteiro válido em cache de CPU ao D3D10DDI_MAPPED_SUBRESOURCE. membro pData e deve definir o RowPitch e o DepthPitch para corresponder ao tamanho do buffer e aos dados fornecidos no pData.

Função ResourceUnmap

Esses parâmetros de entrada para ResourceUnmap são restritos:

Parâmetro Descrição

hDevice

Embora o valor de entrada do runtime do Direct3D não seja restrito, o valor que corresponde ao valor hDevice da chamada resourceMap original.

hResource

O runtime define apenas um recurso D3D10DDIRESOURCE_BUFFER quando um valor diferente de zero para MapFlags é definido na chamada de criação para CreateResource(D3D11).

Sub-recurso

O runtime define apenas o valor como 0.