Melhorias de desempenho de renderização do Direct3D

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

Novos aprimoramentos de aparagem de recursos e desempenho padrão de mapeamento no Direct3D 11.1 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) no 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 WDDM (Modelo de Driver de Exibição do Windows) 1.3 e um driver de exibição do modo de usuário posterior implementa para dar suporte a melhorias no desempenho de renderização do Microsoft Direct3D.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Estruturas e enumerações de desempenho de renderização Direct3D

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

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 os drivers de modo de usuário implementarem.

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 as funções opcionais do WDDM 1.3 e posterior imediatamente acima são implementadas, 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 pode relatar opcionalmente o suporte para marcas de tempo, o que significa que o runtime do Direct3D não irá mascarar esse 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 do 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 criar recursos, mapear e cancelar o mapa de funções

Para essas funções que são 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 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 o tipo D3D10_DDI_USAGE_DEFAULT para 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. 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 os membros DXGI_SAMPLE_DESC.Count como 1 e 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.

ResourceMapfunção

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

Parâmetro Descrição

hResource

O runtime do Direct3D define apenas um recurso de 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-fonte

O runtime define apenas o valor como 0.

DDIMap

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

Flags

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 CPU-cacheável válido ao D3D10DDI_MAPPED_SUBRESOURCE ao membro pData e deve ajustar RowPitch e DepthPitch de modo que correspondam 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, deve corresponder ao valor hDevice da chamada ResourceMap original.

hResource

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

Sub-fonte

O runtime define apenas o valor como 0.