Sintaxis
Parámetros
NumBarriers [in]Tipo: UINT El número de descripciones de barrera enviadas. pBarriers [in]
Tipo: const D3D12_RESOURCE_BARRIER * Puntero a una matriz de descripciones de barrera.
Valor devuelto
Tipo: void Ninguno.Comentarios
Un recurso que se vaya a usar para el estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE debe crearse en ese estado y no debe salir nunca de él mediante una transición. Tampoco se puede hacer la transición a ese estado de un recurso que no se creó en él. Para obtener más información, consulte Acceleration structure memory restrictions en la especificación funcional de DirectX Raytracing (DXR) en GitHub.
- D3D12_RESOURCE_TRANSITION_BARRIER: las barreras de transición indican que un conjunto de subrecursos realiza la transición entre distintos usos. El autor de la llamada debe especificar los usos anterior y posterior de los subrecursos. La marca D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES se usa para realizar la transición de todos los subrecursos de un recurso al mismo tiempo.
- D3D12_RESOURCE_ALIASING_BARRIER: las barreras de alias indican una transición entre los usos de dos recursos diferentes que tienen asignaciones en el mismo montón. La aplicación puede especificar tanto el recurso anterior como el posterior. Tenga en cuenta que uno o ambos recursos pueden ser NULL (lo que indica que cualquier recurso en mosaico podría provocar alias).
- D3D12_RESOURCE_UAV_BARRIER: las barreras de vista de acceso desordenado indican que todos los accesos de UAV (de lectura o escritura) a un recurso concreto deben completarse antes de que pueda comenzar cualquier acceso de UAV futuro (de lectura o escritura). El recurso especificado puede ser NULL. No es necesario insertar una barrera de UAV entre dos llamadas de dibujo o distribución que solo lean un UAV. Además, no es necesario insertar una barrera de UAV entre dos llamadas de dibujo o distribución que escriban en el mismo UAV si la aplicación sabe que es seguro ejecutar los accesos de UAV en cualquier orden. El recurso puede ser NULL (lo que indica que cualquier acceso de UAV podría requerir la barrera).
- D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
- D3D12_RESOURCE_STATE_INDEX_BUFFER
- D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
- D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
- D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
- D3D12_RESOURCE_STATE_COPY_SOURCE
- D3D12_RESOURCE_STATE_DEPTH_READ
- D3D12_RESOURCE_STATE_UNORDERED_ACCESS
- D3D12_RESOURCE_STATE_DEPTH_WRITE
- D3D12_RESOURCE_STATE_COPY_DEST
- D3D12_RESOURCE_STATE_RENDER_TARGET
- D3D12_RESOURCE_STATE_STREAM_OUT
Validación en tiempo de ejecución
El runtime validará que los valores del tipo de barrera sean miembros válidos de la enumeración D3D12_RESOURCE_BARRIER_TYPE. Además, el runtime comprueba lo siguiente:- El puntero al recurso no es NULL.
- El índice de subrecurso es válido
- Los estados anterior y posterior son compatibles con las marcas D3D12_RESOURCE_BINDING_TIER y D3D12_RESOURCE_FLAGS del recurso.
- Los bits reservados de las máscaras de estado no están establecidos.
- Los estados anterior y posterior son diferentes.
- El conjunto de bits de los estados anterior y posterior es válido.
- Si el bit D3D12_RESOURCE_STATE_RESOLVE_SOURCE está establecido, el recuento de muestras del recurso debe ser mayor que 1.
- Si el bit D3D12_RESOURCE_STATE_RESOLVE_DEST está establecido, el recuento de muestras del recurso debe ser igual a 1.
Capa de depuración
La capa de depuración normalmente emite errores cuando la validación en tiempo de ejecución produce un error:- Si una transición de subrecurso en una lista de comandos es incoherente con las transiciones anteriores de la misma lista de comandos.
- Si se usa un recurso sin llamar primero a ResourceBarrier para poner el recurso en el estado correcto.
- Si un recurso se enlaza de forma ilegal para lectura y escritura al mismo tiempo.
- Si los estados anteriores pasados a ResourceBarrier no coinciden con los estados posteriores de las llamadas anteriores a ResourceBarrier, incluido el caso de los alias.
- Todos los casos en los que la capa de depuración de D3D12 emitiría advertencias para ID3D12GraphicsCommandList::ResourceBarrier.
- Si se usa un búfer de profundidad en un modo que no es de solo lectura mientras el recurso tiene establecido el bit de uso D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
Ejemplos
El ejemplo D3D12HelloTriangle usa ID3D12GraphicsCommandList::ResourceBarrier de la siguiente manera:Requisitos
Encabezado: d3d12_xs.h o d3d12_x.hBiblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One
