Processar orçamentos de residência
No Modelo de Driver de Exibição do Windows (WDDM) v2, os processos receberão orçamentos para a quantidade de memória que podem manter residentes. Esse orçamento pode mudar ao longo do tempo, mas geralmente só será imposto quando o sistema estiver sob pressão de memória. Antes do Microsoft Direct3D 12, o orçamento é tratado pelo driver de modo de usuário na forma de notificações trim e falhas makeResident com STATUS_NO_MEMORY. As chamadas MakeResident com falha e notificação TrimToBudget retornam o orçamento mais recente na forma de um valor numBytesToTrim inteiro que indica quanto precisa ser cortado para se ajustar ao novo orçamento.
Para aplicativos Direct3D 12, o orçamento é completamente tratado pelo aplicativo. O tamanho do orçamento é uma indicação para que o aplicativo saiba para que dimensionar. Usando o tamanho do orçamento como dica, o aplicativo pode decidir quantos recursos manter residentes, qual resolução e qualidade de recursos manter.
Para gerenciar corretamente esses orçamentos, o kernel precisa saber qual memória deve participar do orçamento. Há um novo bit ApplicationTarget em DXGK_SEGMENTFLAGS2 estrutura que precisa ser definido em segmentos que o driver do modo kernel deseja incluir na lógica de orçamento. Por exemplo, em uma GPU (unidade de processamento gráfico) discreta com um segmento de VRAM adequado para uso do aplicativo e um segmento de VRAM usado automaticamente para recursos de finalidade especial, o driver provavelmente marcaria apenas o segmento de VRAM primário como ApplicationTarget. Para GPUs integradas, o segmento de abertura main geralmente será o marcado. Não há limite para quantos segmentos podem ser marcados como ApplicationTarget. O kernel os agregará e apresentará ao aplicativo um tamanho unificado.