Share via


resinfo (sm4 - asm)

Interroger les dimensions d’une ressource d’entrée donnée.

resinfo[_uint|_rcpFloat] dest[.mask], srcMipLevel.select_component, srcResource[.swizzle]
Élément Description
Dest
[in] Adresse du résultat de l’opération.
srcMipLevel
[in] Niveau mip.
srcResource
[in] Texture d’entrée t# ou u# pour laquelle les dimensions sont interrogées.

Notes

srcMipLevel étant lu en tant que scalaire d’entier non signé, un sélecteur de composant unique est requis pour le registre source, s’il ne s’agit pas d’une valeur immédiate scalaire.

dest reçoit [width, height, depth or array size, total-mip-count], sélectionné par le masque d’écriture.

Les valeurs de largeur, de hauteur et de profondeur retournées correspondent au niveau mip sélectionné par le paramètre srcMipLevel et sont exprimées en nombre de texels, indépendamment de la taille des données de texel. Pour les ressources à échantillonnage multiple (texture2D[Array]MS#), la largeur et la hauteur sont également retournées dans des texels, et non dans des exemples.

Le nombre total de mip retournés dans dest.w n’est pas affecté par le paramètre srcMipLevel .

Pour les UAV (u#), le nombre de niveaux de mip est toujours de 1.

Tous les aspects de cette instruction sont basés sur les caractéristiques de la vue de ressource liée à la valeur t#/u#, et non sur la ressource de base sous-jacente.

Les valeurs retournées sont toutes à virgule flottante, sauf si le modificateur _uint est utilisé, auquel cas les valeurs retournées sont toutes des entiers. Si le modificateur _rcpFloat est utilisé, toutes les valeurs retournées sont à virgule flottante, et la largeur, la hauteur et la profondeur sont retournées en tant que réciproques (1,0f/largeur, 1,0f/hauteur, 1,0f/profondeur), y compris INF si la largeur/hauteur/profondeur est égale à 0 par rapport au comportement srcMipLevel hors limites. Le modificateur de _rcpFloat s’applique uniquement aux valeurs retournées de largeur, de hauteur et de profondeur, et ne s’applique pas aux valeurs définies sur 0 et donc non retournées, et ne s’applique pas non plus aux retours de taille de tableau.

Le swizzle sur srcResource permet aux valeurs retournées d’être swizzled arbitrairement avant d’être écrites dans la destination.

Si srcResource est un Texture1D, width est retourné dans dest.x et dest.yz est défini sur 0.

Si srcResource est une Texture1DArray, la largeur est retournée dans dest.x, la taille du tableau est retournée dans dest.y et dest.z est définie sur 0.

Si srcResource est un Texture2D, la largeur et la hauteur sont retournées dans dest.xy, et dest.z est défini sur 0.

Si srcResource est un Texture2DArray, la largeur et la hauteur sont retournées dans dest.xy, et la taille du tableau est retournée dans dest.z.

Si srcResource est un Texture3D, la largeur, la hauteur et la profondeur sont retournées dans dest.xyz.

Si srcResource est un TextureCube, la largeur et la hauteur des dimensions de face de cube individuelles sont retournées dans dest.xy, et dest.z est défini sur 0.

Si srcResource est un TextureCubeArray, la largeur et la hauteur des dimensions individuelles du cube sont retournées dans dest.xy. dest.z est défini sur une valeur non définie.

Si la pince mip par ressource a été spécifiée sur srcResource, resinfo retourne toujours le nombre total de mipmaps dans la vue pour le nombre de mips, quel que soit la pince. Toutefois, si les dimensions d’un miplevel donné sont demandées par resinfo et que le miplevel a été serré (par exemple, une pince de 2,2 signifie que les mips 0 et 1 ont été serrés), les dimensions retournées ne sont pas définies. Certaines implémentations retournent le comportement hors limites spécifié pour resinfo lorsque le miplevel est hors limites. D’autres implémentations retournent les dimensions du mip comme s’il n’avait pas été serré.

Restrictions

  • srcResource doit être un registre t# ou u# qui n’est pas une mémoire tampon, mais une texture*.
  • L’adressage relatif de srcResource n’est pas autorisé.
  • srcMipLevel doit utiliser un sélecteur de composant unique s’il ne s’agit pas d’un immédiat scalaire.
  • L’extraction à partir de t# ou u# qui n’a rien de lié à retourne 0 pour la largeur, la hauteur, la profondeur ou la taille de tableau et le nombre total de mips. Le modificateur _rcpFloat est toujours respecté dans ce cas, renvoyant ainsi INF pour les valeurs retournées applicables.
  • Si srcMipLevel est hors de la plage du nombre de miplevels disponibles dans la ressource, le comportement de la valeur de retour de taille (dest.xyz) est identique à celui d’une ressource t# ou u# indépendante. Le nombre total de mip est toujours retourné dans dest.w pour ce cas.

Cette instruction s’applique aux étapes suivantes du nuanceur :

Nuanceur de sommets Nuanceur de géométrie Nuanceur de pixels
x x x

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

Modèle de nuanceur Prise en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 Oui
Modèle de nuanceur 4 Oui
Modèle de nuanceur 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Modèle de nuanceur 1 (DirectX HLSL) non

Shader Model 4 Assembly (DirectX HLSL)