Compartir a través de


Método ID3D12Device4::CreateCommittedResource1 (d3d12.h)

Crea un recurso y un montón implícito (opcionalmente para una sesión protegida), de modo que el montón es lo suficientemente grande como para contener todo el recurso y el recurso se asigna al montón. Consulte también ID3D12Device::CreateCommittedResource para obtener un ejemplo de código.

Sintaxis

HRESULT CreateCommittedResource1(
  [in]            const D3D12_HEAP_PROPERTIES    *pHeapProperties,
  [in]            D3D12_HEAP_FLAGS               HeapFlags,
  [in]            const D3D12_RESOURCE_DESC      *pDesc,
  [in]            D3D12_RESOURCE_STATES          InitialResourceState,
  [in, optional]  const D3D12_CLEAR_VALUE        *pOptimizedClearValue,
  [in, optional]  ID3D12ProtectedResourceSession *pProtectedSession,
  [in]            REFIID                         riidResource,
  [out, optional] void                           **ppvResource
);

Parámetros

[in] pHeapProperties

Tipo: const D3D12_HEAP_PROPERTIES*

Puntero a una estructura de D3D12_HEAP_PROPERTIES que proporciona propiedades para el montón del recurso.

[in] HeapFlags

Tipo: D3D12_HEAP_FLAGS

Opciones del montón, como una combinación or bit a bit de D3D12_HEAP_FLAGS constantes de enumeración.

[in] pDesc

Tipo: const D3D12_RESOURCE_DESC*

Puntero a una estructura de D3D12_RESOURCE_DESC que describe el recurso.

[in] InitialResourceState

Tipo: D3D12_RESOURCE_STATES

Estado inicial del recurso, como una combinación bit a bit-OR de D3D12_RESOURCE_STATES constantes de enumeración.

Al crear un recurso junto con un montón de D3D12_HEAP_TYPE_UPLOAD , debe establecer InitialResourceStateen D3D12_RESOURCE_STATE_GENERIC_READ.

Al crear un recurso junto con un montón de D3D12_HEAP_TYPE_READBACK , debe establecer InitialResourceStateen D3D12_RESOURCE_STATE_COPY_DEST.

[in, optional] pOptimizedClearValue

Tipo: const D3D12_CLEAR_VALUE*

Especifica una estructura D3D12_CLEAR_VALUE que describe el valor predeterminado de un color claro.

pOptimizedClearValue especifica un valor para el que las operaciones claras son más óptimas. Cuando el recurso creado es una textura con las marcas D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL , debe elegir el valor con el que se llamará normalmente a la operación clear. Puede llamar a la operación clear con otros valores, pero esas operaciones no serán tan eficaces como cuando el valor coincida con el pasado a la creación de recursos.

Al usar D3D12_RESOURCE_DIMENSION_BUFFER, debe establecer pOptimizedClearValue en nullptr.

[in, optional] pProtectedSession

Tipo: ID3D12ProtectedResourceSession*

Puntero opcional a un objeto que representa una sesión para la protección de contenido. Si se proporciona, esta sesión indica que el recurso debe estar protegido. Puede obtener un id3D12ProtectedResourceSession llamando a ID3D12Device4::CreateProtectedResourceSession.

[in] riidResource

Tipo: REFIID

Referencia al identificador único global (GUID) de la interfaz de recursos que se va a devolver en ppvResource.

Aunque riidResource es normalmente el GUID de ID3D12Resource, puede ser el GUID de cualquier interfaz. Si el objeto de recurso no admite la interfaz para este GUID, se produce un error en la creación con E_NOINTERFACE.

[out, optional] ppvResource

Tipo: void**

Puntero opcional a un bloque de memoria que recibe el puntero de interfaz solicitado al objeto de recurso creado.

ppvResource puede ser nullptr, para habilitar las pruebas de funcionalidad. Cuando ppvResource es nullptr, no se crea ningún objeto y S_FALSE se devuelve cuando pDesc es válido.

Valor devuelto

Tipo: HRESULT

Si la función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de errorHRESULT.

Valor devuelto Descripción
E_OUTOFMEMORY No hay memoria suficiente para crear el recurso.

Consulta Códigos de retorno de Direct3D 12 para ver otros valores devueltos posibles.

Comentarios

Este método crea un recurso y un montón, de modo que el montón es lo suficientemente grande como para contener todo el recurso y el recurso se asigna al montón. El montón creado se conoce como un montón implícito, porque la aplicación no puede obtener el objeto del montón. Antes de liberar la referencia final en el recurso, la aplicación debe asegurarse de que la GPU ya no leerá ni escribirá en este recurso.

El montón implícito se convierte en residente para el acceso a GPU antes de que el método devuelva el control a la aplicación. Consulte también Residencia.

No se puede cambiar la asignación de VA de GPU de recursos. Consulte ID3D12CommandQueue::UpdateTileMappings y Recursos en mosaico de volumen.

Varios subprocesos pueden llamar a este método simultáneamente.

Requisitos

   
Cliente mínimo compatible Compilación 20348 de Windows 10
Servidor mínimo compatible Compilación 20348 de Windows 10
Plataforma de destino Windows
Encabezado d3d12.h
Library d3d12.lib
Archivo DLL d3d12.dll