Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1710 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Equivalent de GL_MAX_TEXTURE_UNITS en Direct3d

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Equivalent de GL_MAX_TEXTURE_UNITS en Direct3d

n°1869600
Tetedeienc​h
Head Of God
Posté le 05-04-2009 à 01:35:07  profilanswer
 

Y a pas de bonne sous cat pour ce genre de questions :/
 
je cherche la fonction Direct3d, n'ayant pas trouvé mon bonheur dans les caps Direct3d, me permettant de trouver le nombre d'unités de texture fixes d'une carte graphique, accessibles en une passe dans un pixel shader.
 
Je sais le faire en OpenGL via l'appel à la fonction suivante :

Code :
  1. glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxTextureUnits);


 
Sur ma 9800GTX, cela me renvoie 4, ce qui est la réponse correcte (dans un shader, il y a bien 4 unités de texture accessible, cf http://www.hardware.fr/medias/phot [...] 018449.gif ).
 
Dans les caps D3D, il y a les options MaxSimultaneousTextures et MaxTextureBlendStages, mais qui ne sont pas les bonnes valeurs (et pour cause, sur la même carte, ca me renvoie 8).
 
Bref, après un dump de toutes les caps D3D, je n'ai pas trouvé d'équivalent à cette info toute bête... qui m'est indispensable pour des raisons d'optimisation.
 
Quelqu'un aurait une idée ? Merci :jap:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
mood
Publicité
Posté le 05-04-2009 à 01:35:07  profilanswer
 

n°1869901
Tetedeienc​h
Head Of God
Posté le 06-04-2009 à 09:33:37  profilanswer
 

Up ?

 

Je voudrais pas me retrouver à trimballer un .exe en OpenGL qui file l'info à mon .exe DirectX :/


Message édité par Tetedeiench le 06-04-2009 à 09:34:04

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1870398
Tetedeienc​h
Head Of God
Posté le 07-04-2009 à 09:27:51  profilanswer
 

:cry:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1870699
Tetedeienc​h
Head Of God
Posté le 07-04-2009 à 17:13:41  profilanswer
 

Me dites pas que chai pô possib' :cry:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871147
Tetedeienc​h
Head Of God
Posté le 08-04-2009 à 15:22:01  profilanswer
 

Je perds pas espoir :D J'ai toujours rien trouvé de concret.


Message édité par Tetedeiench le 08-04-2009 à 15:22:11

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871394
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 10:00:13  profilanswer
 

pitié :jap:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871492
bjone
Insert booze to continue
Posté le 09-04-2009 à 13:39:21  profilanswer
 

C'est une très bonne question. Si dans les caps tu as pas trouvé ce qu'il te fallait, je t'avoue que.....
Pour le hardware moderne, je sais pas trop si ça aurait toujours un sens :??:

n°1871521
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 14:02:11  profilanswer
 

bjone a écrit :

C'est une très bonne question. Si dans les caps tu as pas trouvé ce qu'il te fallait, je t'avoue que.....
Pour le hardware moderne, je sais pas trop si ça aurait toujours un sens :??:

 

Ben malheureusement pour moi ca en a un... Pour la série GeForce 9, dans le pipeline "fixe", tu as 8 unités de texture dispos pour ton multitexturing (de mémoire, c'est pitêt 16, mais je pense pas), mais 4 en une seule passe par shader core (évidemment, tu peux en adresser beaucoup plus en plusieurs passes). Sur la série GeForce 10, tu en as 8 en fixe, 8 par shader core.

 

Sur la série 10, je fais bien plus chauffer avec 8 textures qu'avec 4 évidemment. Sur la série 9, je fais plus chauffer avec 4 textures qu'avec 8.

 

De mon point de vue, sans cette info, le shader perd beaucoup d'efficacité. En gros, les unités me fournissent l'info, mais en deux passes (i.e. si j'ai 4 unités mémoires dispos par unité d'exécution shader et que je travaille avec 8 textures, elles vont le faire en deux fois, mon shader va se tourner les pouces, bref, y a du temps GPU gâché).

 

En OpenGL, c'est vite réglé. Alors oui, c'est vite réglé avec un petit .exe OpenGL que se trimballerait mon programme d3d, ce genre de trucs, mais je voudrais faire propre :/ :cry: Ca m'étonne que ce soit pas dispo :(


Message édité par Tetedeiench le 09-04-2009 à 14:11:17

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871668
bjone
Insert booze to continue
Posté le 09-04-2009 à 16:41:13  profilanswer
 

J'allais dire:
 
----------------------------------------------------
 
Je pense que l'idée ce serait de rendre l'option visible à l'utilisateur (j'ai pas regardé si c'était déjà le cas), et d'avoir une passe de profilage de ton shader de chauffe en regardant le point crête de fillrate via la Query de bande-passante:
 
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
 
En terme de recouvrement texture/math, c'est la variante qui a le plus de textures sans avoir le FillRateUtilizedPercent qui s'écroule, qui devrait chauffer le plus non en toute logique ?
 
----------------------------------------------------
 
Mais je sais pas si ce serait valable. (Et si les drivers reportent un truc exploitable au niveau de la Query)

Message cité 1 fois
Message édité par bjone le 09-04-2009 à 16:42:25
n°1871669
bjone
Insert booze to continue
Posté le 09-04-2009 à 16:43:15  profilanswer
 

T'as demandé à Tridam ce qu'il en pensait ?

mood
Publicité
Posté le 09-04-2009 à 16:43:15  profilanswer
 

n°1871693
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 17:26:00  profilanswer
 

bjone a écrit :

J'allais dire:
 
----------------------------------------------------
 
Je pense que l'idée ce serait de rendre l'option visible à l'utilisateur (j'ai pas regardé si c'était déjà le cas), et d'avoir une passe de profilage de ton shader de chauffe en regardant le point crête de fillrate via la Query de bande-passante:
 
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
 
En terme de recouvrement texture/math, c'est la variante qui a le plus de textures sans avoir le FillRateUtilizedPercent qui s'écroule, qui devrait chauffer le plus non en toute logique ?
 
----------------------------------------------------
 
Mais je sais pas si ce serait valable. (Et si les drivers reportent un truc exploitable au niveau de la Query)


 
Je vais essayer avec ca voir ce que ca rend... le blem, c'est que cela retarde d'autant l'exécution de l'appli, et dans un environnement overclocké, la détection d'erreur doit s'enclencher le plus rapidement possible... et justement, mettre en place ce genre de mesure interfère.
 
Tridam ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871707
bjone
Insert booze to continue
Posté le 09-04-2009 à 17:35:29  profilanswer
 

Pour moi un tel profilling qui cherche le combo nombre de textures/FillRateUtilizedPercent maximum, ça peut prendre une centaines de frames.  
 
(genre 1 frame de precachage et une frame avec Query par cas)
 
Enfin à tester je me suis jamais servi des Query statistiques, donc je sais pas leur qualité d'implémentation.
 
Enfin je dis ça, si ça ce trouve c'est une mauvaise idée, mais avoir un shader de chauffe auto-adaptatif en se basant sur les stats de rendu ça peut être sympa.
 
Tridam, Damien Triolet qui fait les tests 2D-3D pour hfr.

n°1871711
bjone
Insert booze to continue
Posté le 09-04-2009 à 17:39:25  profilanswer
 

Je suis bête:
 
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
 
Donc y'a plus qu'à monter le nombre de texture jusqu'à avoir du 50:50. (J'aurai tendance a penser que le point de chauffe max doit être avec le temps math très légèrement supérieur au temps mémoire, histoire de pas avoir les unitées maths qui bullent)


Message édité par bjone le 09-04-2009 à 17:42:08
n°1871712
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 17:39:31  profilanswer
 

Je pensais que l'info allait être rafraichie en termes de secondes... effectivement, en nombre de frames, c'est tout à fait acceptable. je vais y jeter un oeil :jap: J'espère que coté ATI ca a été correctement implémenté :sweat:

 

Effectivement, ca peut être une bonne idée. Je vais creuser les résultats renvoyés par les querys en question.

 

Si les résultats renvoyés ne sont pas cohérents, je le contacterai ;) Merci pour les infos, mister :jap:

 

Effectivement, le 2nd moyen est + efficace ;)


Message édité par Tetedeiench le 09-04-2009 à 17:40:17

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871714
bjone
Insert booze to continue
Posté le 09-04-2009 à 17:43:39  profilanswer
 

J'ai jamais joué avec les Querys de stats, donc je peux pas te garantir que je t'envoie pas sur une voie de garage avec des orties, mais ça peut être pas mal :)

n°1871715
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 17:46:01  profilanswer
 

Je vais essayer, j'ai une ATI et une Nvidia sous la main, en croisant les doigts... Et comme j'ai déjà les shaders avec plusieurs textures que je peux modifier à volonté...


Message édité par Tetedeiench le 09-04-2009 à 17:46:17

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871727
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 18:09:49  profilanswer
 

D3DQUERYTYPE_VERTEXTIMINGS => Not supported
D3DDEVINFO_D3D9BANDWIDTHTIMINGS => Not supported

 

le tout sur Nvidia GeForce 9 drivers à jour :sweat:

 

Dommage, c'était une bonne idée :sweat:


Message édité par Tetedeiench le 09-04-2009 à 18:09:59

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871728
bjone
Insert booze to continue
Posté le 09-04-2009 à 18:23:11  profilanswer
 

Rahhh :/
 
exact: http://developer.download.nvidia.c [...] rguide.pdf
 
Bon bah, faut revenir sur les caps, mais si y'a pas ce que tu veux :/
 

Message cité 1 fois
Message édité par bjone le 09-04-2009 à 18:33:59
n°1871740
Tetedeienc​h
Head Of God
Posté le 09-04-2009 à 18:44:28  profilanswer
 

bjone a écrit :

Rahhh :/
 
exact: http://developer.download.nvidia.c [...] rguide.pdf
 
Bon bah, faut revenir sur les caps, mais si y'a pas ce que tu veux :/
 


 
Ben dans les caps, j'ai :
 
MaxTextureBlendStages
    Maximum number of texture-blending stages supported in the fixed function pipeline. This value is the number of blenders available. In the programmable pixel pipeline, this corresponds to the number of unique texture registers used by pixel shader instructions.  
 
MaxSimultaneousTextures
    Maximum number of textures that can be simultaneously bound to the fixed-function pipeline sampler stages. If the same texture is bound to two sampler stages, it counts as two textures.  
    This value has no meaning in the programmable pipeline where the number of sampler stages is determined by each pixel shader version. Each pixel shader version also determines the number of texture declaration instructions. See Pixel Shaders.
 
L'un et l'autre ne correspondent pas (l'un est le nombre de registres, l'autre le nombre d'unités dispo dans le pipeline fixe, hors shader).
 
Il me manque la troisième info : le nombre d'unités dans le pipeline programmable.
 
Je vais finir par passer par l'OpenGL. C'est une info de base, certes, mais c'est moche quand même, faut l'avouer :/


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°1871806
bjone
Insert booze to continue
Posté le 09-04-2009 à 23:11:58  profilanswer
 

Le prob c'est que les caps D3D exposent les limites d'utilisation, pas la topo physique du GPU. (Dont la description peut se retrouver obsolète dans le temps)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Equivalent de GL_MAX_TEXTURE_UNITS en Direct3d

 

Sujets relatifs
Ezpublish version 4 ou équivalent de Ezpublish ?[PHP] Equivalent CTRL+F5 - Refresh complet sans cache
Erreur dans une fonction MAXEquivalent en C# pour sérialiser une structure. (Envoi par le réseau)
[SQL] Requete MAXEquivalent mysql_insert_id() pour MDB2 ?
[Mysql] Demande de requete MAX()...Equivalent de la fonction TEXTE d Excel ?
equivalent de maxRequestLength avec websphere[PHP] equivalent de super en php
Plus de sujets relatifs à : Equivalent de GL_MAX_TEXTURE_UNITS en Direct3d


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR