Syntaxe
typedef enum D3D12XBOX_GDS_OPERATION
{
D3D12XBOX_GDS_OPERATION_DEFAULT = 0,
D3D12XBOX_GDS_OPERATION_READ_AT_EOS = 1,
D3D12XBOX_GDS_OPERATION_READ_AT_TOP = 2,
D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB = 3,
D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER = 4,
D3D12XBOX_GDS_OPERATION_COMPUTE = 8,
} D3D12XBOX_GDS_OPERATION
Constantes
| Constante | Description |
|---|---|
| D3D12XBOX_GDS_OPERATION_DEFAULT | Les lectures sont de type D3D12XBOX_GDS_OPERATION_READ_PIPELINED_AT_EOS. Les écritures se font toujours en haut du pipeline (TOP) avec une copie; insérez une synchronisation au besoin. Indique que la valeur par défaut doit être utilisée : D3D12XBOX_GDS_OPERATION_READ_AT_EOS pour ID3D12GraphicsCommandList::ReadGDSX, et D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB pour ID3D12GraphicsCommandList::WriteGDSX. Ces paramètres représentent le plus fidèlement le comportement par défaut de SetUAV dans DirectX 12 |
| D3D12XBOX_GDS_OPERATION_READ_AT_EOS | Lit le contenu du GDS à la fin du nuanceur, en pipeline avec le rendu. Des barrières (fences) ou WaitUntilIdle peuvent être nécessaires pour garantir que la lecture a atteint la mémoire. Une lecture du GDS sera mise en pipeline et aura lieu à la fin du nuanceur (EOS). Si le GPU a besoin de toute urgence d’un accès en lecture aux données GDS écrites, appelez InsertFence et InsertWaitOnFence pour bloquer le processeur de commandes (CP) jusqu’à ce que l’écriture EOS soit terminée. Si les compteurs doivent être lus par l’intermédiaire du cache L2 (TCC), un vidage du cache sera nécessaire. Si les compteurs doivent être lus par l’intermédiaire du CP, aucun vidage du cache ne sera nécessaire. Si les données GDS écrites sont utilisées sur le GPU suffisamment loin de l’endroit où elles sont écrites, aucune synchronisation ne sera nécessaire, à l’exception d’un éventuel vidage du cache. |
| D3D12XBOX_GDS_OPERATION_READ_AT_TOP | Lit le GDS en haut du pipeline (TOP). Indique qu’une lecture non mise en pipeline du GDS sera effectuée par le CP en haut du pipeline (TOP). Cela signifie que si des nuanceurs en cours d’exécution modifient le GDS (par exemple, au moyen de compteurs UAV), la lecture peut produire des résultats inattendus, car ceux-ci constitueront un instantané de l’état du GDS pendant l’exécution du nuanceur. Si aucun nuanceur en cours d’exécution n’utilise le GDS, les résultats seront les mêmes que ceux produits dans le cas EOS. Les considérations relatives à l’écriture-lecture GPU applicables à D3D12XBOX_GDS_OPERATION_READ_AT_EOS s’appliquent également à D3D12XBOX_GDS_OPERATION_READ_AT_TOP. |
| D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB | Écrit le GDS en haut du pipeline, mais copie d’abord les données des compteurs dans la mémoire tampon de commandes (CB). Indique qu’une écriture GDS ne peut être effectuée qu’à partir d’un nuanceur ou du CP; WriteGDSX effectue donc les écritures en TOP. Lorsqu’une copie est demandée, les données de compteur fournies sont copiées dans la mémoire tampon de commandes et le pointeur source peut être abandonné. Le pointeur n’a pas besoin de pointer vers de la mémoire mappée par le GPU. Il s’agit essentiellement d’une copie du processeur vers le GDS. |
| D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER | Écrit le GDS en haut du pipeline; toutefois, comme le pointeur est utilisé, le titre doit suivre sa durée de vie et ses risques. Cette constante indique qu’une écriture GDS ne peut être effectuée qu’à partir d’un nuanceur ou du CP; WriteGDSX effectue donc les écritures en TOP. Lorsqu’une copie par pointeur est demandée, les données de compteur fournies sont utilisées par le GPU au moment où le paquet est exécuté. Cela signifie que le titre doit suivre les risques et la durée de vie du pointeur pCounterValues, et que pCounterValue doit se trouver dans la mémoire mappée par le GPU; sinon, un plantage du GPU est probable. Ce type de copie convient mieux au GDS de GPU à GPU. |
| D3D12XBOX_GDS_OPERATION_COMPUTE | Pour les opérations de fin de nuanceur (EOS), spécifie si l’opération est une opération EOS de calcul ou une opération EOS graphique. Cette constante indique que le paquet est lié au calcul plutôt qu’aux graphiques, ce qui permet de distinguer les fins de nuanceurs. |
Remarques
D3D12XBOX_GDS_OPERATION spécifie les opérations de lecture et d’écriture pour le partage de données global (GDS).
Les fonctions suivantes utilisent cette énumération :
Direct3D 12 n’effectue aucune gestion implicite du GDS; tout l’espace GDS est donc disponible pour le titre. Pour plus d’informations sur le pointeur de destination des données GDS, consultez D3D12_GPU_VIRTUAL_ADDRESS.
