Partilhar via


PFND3DDDI_SETPRIORITYCB função de retorno de chamada (d3dumddi.h)

A função pfnSetPriorityCb define o nível de prioridade de um recurso ou lista de alocações.

Sintaxe

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

HRESULT Pfnd3dddiSetprioritycb(
  HANDLE hDevice,
  D3DDDICB_SETPRIORITY *unnamedParam2
)
{...}

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in]

Um ponteiro para uma estrutura D3DDDICB_SETPRIORITY que descreve o nível de prioridade para definir um recurso ou uma lista de alocações.

Retornar valor

pfnSetPriorityCb retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O nível de prioridade foi definido com êxito.
E_INVALIDARG Os parâmetros foram validados e determinados como incorretos.

Essa função também pode retornar outros valores HRESULT.

Comentários

O driver de exibição do modo de usuário pode chamar a função pfnSetPriorityCb para definir a prioridade do recurso subjacente ou da lista de alocações. Se o nível de prioridade de um recurso for definido, todas as alocações que pertencem ao recurso serão definidas para o nível de prioridade especificado. Normalmente, o driver de exibição do modo de usuário define a prioridade de um recurso ou lista de alocações depois que o runtime do Microsoft Direct3D chama a função SetPriority ou SetResourcePriorityDXGI do driver de exibição do modo de usuário para definir a prioridade de remoção da memória para um recurso. No entanto, o driver de exibição do modo de usuário pode definir a prioridade das alocações a qualquer momento.

Depois que um aplicativo solicita definir o nível de prioridade de uma superfície, o driver de exibição do modo de usuário deve definir o recurso apropriado ou a lista de alocações para o nível de prioridade especificado pelo aplicativo.

Nota Os níveis de prioridade são apenas uma dica para o gerenciador de memória de vídeo; eles podem ser ignorados pelo gerenciador de memória em várias condições.
 
Uma prioridade de alocação define tanto a probabilidade de que a alocação permaneça residente quanto a probabilidade de quão difícil o gerenciador de memória de vídeo tentará respeitar a preferência do driver para o posicionamento da alocação. Os seguintes níveis de prioridade são definidos no arquivo de cabeçalho D3dukmdt.h:

O driver pode usar níveis de prioridade diferentes dos valores definidos anteriormente quando apropriado. Por exemplo, marcar uma alocação com um nível de prioridade de 0x78000001 indica que a alocação está ligeiramente acima do normal.

Exemplos

O exemplo de código a seguir mostra como definir o nível de prioridade.

HRESULT CD3DContext::SetPriority(CONST D3DDDIARG_SETPRIORITY* pSetPriority) {
    DWORD  dwSurfaceHandle = (DWORD)(DWORD_PTR)pSetPriority->hResource;
    CResource   &res = m_RTbl[dwSurfaceHandle];
    D3DDDICB_SETPRIORITY    setPri;
    UINT                    priority;

    priority = pSetPriority->Priority;

    memset(&setPri, 0, sizeof(setPri));

    setPri.hResource   = res.m_hResRuntime;
    setPri.pPriorities = &priority;

    return (m_d3dCallbacks.pfnSetPriorityCb(m_hD3D, &setPri));
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

Setpriority

SetResourcePriorityDXGI