Syntaxe
Constantes
Remarques
Une application indique la façon dont une ressource est destinée à être utilisée (son utilisation) dans une description de ressource. Il existe plusieurs structures pour créer des ressources, notamment XG_TEXTURE1D_DESC, XG_TEXTURE2D_DESC, XG_TEXTURE3D_DESC et XG_BUFFER_DESC. Une application ne précise pas le type de mémoire (le pool) dans lequel une ressource doit être créée. Vous indiquez plutôt l’utilisation prévue de la ressource et laissez le runtime (de concert avec le pilote et un gestionnaire de mémoire) choisir le type de mémoire qui offrira les meilleures performances.Restrictions d’utilisation des ressources
Chaque utilisation impose un compromis entre l’accessibilité pour le processeur et/ou le GPU. En général, un accès plus performant pour l’un de ces deux processeurs signifie un accès moins performant pour l’autre. Aux deux extrêmes se trouvent les utilisations XG_USAGE_DEFAULT et XG_USAGE_STAGING. XG_USAGE_DEFAULT restreint l’accès presque entièrement au GPU. XG_USAGE_STAGING restreint l’accès presque entièrement au processeur et ne permet qu’un transfert de données (copie) d’une ressource entre le GPU et le processeur. L’utilisation XG_USAGE_DYNAMIC est un cas particulier qui optimise le flux de données du processeur vers le GPU lorsque le processeur génère ces données à la volée et les envoie à haute fréquence. XG_USAGE_DYNAMIC est généralement utilisée pour les ressources contenant des données de sommets et pour les mémoires tampons de constantes. L’utilisation XG_USAGE_IMMUTABLE est un autre cas particulier qui fait en sorte que le GPU génère les données une seule fois, lorsque vous créez une ressource. XG_USAGE_IMMUTABLE convient bien aux données comme les textures, car ces données sont généralement lues en mémoire à partir d’un format de fichier. Par conséquent, lorsque vous créez une texture avec XG_USAGE_IMMUTABLE, le GPU lit cette texture directement en mémoire. Utilisez le tableau suivant pour choisir l’utilisation qui décrit le mieux la façon dont le processeur et le GPU doivent accéder à la ressource. Il existe des compromis en matière de performances.
1 : Les lectures et écritures par le GPU d’une ressource ayant l’utilisation XG_USAGE_STAGING sont limitées aux opérations de copie. De plus, comme les formats de profondeur-gabarit et les dispositions multiéchantillons sont des détails d’implémentation propres à une conception de GPU particulière, le système d’exploitation ne peut généralement pas exposer ces formats et dispositions au processeur. Par conséquent, les ressources intermédiaires ne peuvent pas être des mémoires tampons de profondeur-gabarit ni des cibles de rendu multiéchantillonnées.
Comme les ressources XG_USAGE_DYNAMIC consomment des capacités matérielles précises, utilisez-les avec parcimonie. Le pilote d’affichage alloue généralement la mémoire des ressources XG_USAGE_DYNAMIC avec un algorithme de mise en cache qui favorise les écritures du processeur et nuit à ses lectures. Par conséquent, ne vous attendez pas à des lectures processeur performantes, ni même constantes, à partir des ressources XG_USAGE_DYNAMIC.
Options de liaison des ressources
Pour maximiser les performances, les options d’utilisation des ressources ne peuvent pas toutes servir de ressources d’entrée ou de sortie pour le pipeline. Ce tableau indique ces limitations.- 2 : Si la ressource est liée en tant qu’entrée et sortie au moyen de vues différentes, chaque vue doit utiliser des sous-ressources différentes.
- 3 : La ressource ne peut être créée qu’avec une seule sous-ressource, ne peut pas être un tableau de textures et ne peut pas être une chaîne de mipmaps.
