GT Turbo Posted September 29, 2005 Author Report Share Posted September 29, 2005 SCPCD : A non je me suis trompé J'ai verifié dans un de mes codes et j'ai bien fait comme toi... Juste il va falloir que je cherches..... hé m.......J'hallucines !! Car le truc c'est que cela marche pendant une dizaine de fois et après le code 68000 se retrouve bloqué sans raison. Le 68000 ne dispose pas de cache donc rien a voir de ce coté !! Le problème quand on devellope sur la Jag, non ce n'est pas la difficulté de programmmer ou autres, c'est de tout synchroniser !! ARGHHHHHHHHHHHHHHHH GT Asynchrone Link to comment Share on other sites More sharing options...
SCPCD Posted September 29, 2005 Report Share Posted September 29, 2005 Cela viens peut-être du 68000 : Comment tu fais pour tester le GPUGO ? Parcequ'il y a un bug dans la jag pour certaines instructions 68000 lors de l'accés a des registres GPU/Blitter...etc.... c'est indiqué dans la liste des bugs pour l'ecriture mais pour la lecture je sais pas si c pareil (je pense que oui) Ensuite, sinon tu as plusieurs autres possibilité : - générer une interruptions sur le 68000 - utiliser une adresse dans la RAM GPU pour indiquer qu'il a fini et tu lis au 68000 cette adresse en permanance. La premiere est celle qui donnera plus de peche au GPU mais la deuxieme est la plus simple a ecrire. Je me rappelle que j'avais aussi des trucs bizarre avec le GPU lorsque je voulais verifier qu'il etait arreté. Du coup je faisait comme Native c'est a dire la seconde solution ecrite au dessus. wait_for_gpu: move.l All_Done,d0 cmpi.l #$12345678,d0 bne.s wait_for_gpu move.l #0,All_Done un truc de ce genre Et normalement, en faisant : [code] moveq #$12345678,r30 movei #All_Done, r31 store r30, (r31) ; GPU stoppen moveq #0,r30 movei #G_CTRL,r31 store r30,(r31) ca devrais fonctionner puisque je l'ai deja fait et dans Native aussi c pareil... mais peut-être que en ne faisant que [code] wait_for_gpu: move.l G_CTRL,d0 btst.l #0,d0 bne.s wait_for_gpu ca fonctionnerais... (si tu ne fais pas deja ca ) Link to comment Share on other sites More sharing options...
GT Turbo Posted September 29, 2005 Author Report Share Posted September 29, 2005 SCPCD : - utiliser une adresse dans la RAM GPU pour indiquer qu'il a fini et tu lis au 68000 cette adresse en permanance. J'ai déjà essayé et ca marche pas SCPCD : mais peut-être que en ne faisant que wait_for_gpu:move.l G_CTRL,d0btst.l #0,d0bne.s wait_for_gpuUn truc pas très loin :[code]lea G_CTRL,a0move.l #1,(a0)Wait : move.l (a0),d0bne.s WaitJ'ai meme essayé un tst.l (a0) mais que nenni !! Je vais essayer la méthode que tu m'as décrite mais c'est bizzare ce truc, tu me diras un de plus !!GT Presque perdu Link to comment Share on other sites More sharing options...
SCPCD Posted September 29, 2005 Report Share Posted September 29, 2005 Citation Un truc pas très loin : lea G_CTRL,a0move.l #1,(a0)Wait : move.l (a0),d0bne.s Waitje comprends pourquoi ca ne marche pas !!car lorsque tu lit G_CTRL, tu ne lis pas exactement la valeur de CTRL ecrit par le GPU !!!Car lorsque tu lis, il y a la version du processeur dans les bits le plus haut, et les latchs interruptions qui ne sont egal a 0 que si tu as ecrit un 1 dedans !il faut donc juste tester le bit 0 de ce registre. Link to comment Share on other sites More sharing options...
GT Turbo Posted September 29, 2005 Author Report Share Posted September 29, 2005 SCPCD : Citation Un truc pas très loin : lea G_CTRL,a0move.l #1,(a0)Wait : move.l (a0),d0bne.s Waitje comprends pourquoi ca ne marche pas !!car lorsque tu lit G_CTRL, tu ne lis pas exactement la valeur de CTRL ecrit par le GPU !!!Car lorsque tu lis, il y a la version du processeur dans les bits le plus haut, et les latchs interruptions qui ne sont egal a 0 que si tu as ecrit un 1 dedans !il faut donc juste tester le bit 0 de ce registre.Exact, j'avais pas pais gaffe au reste du registre, merci pour le coup de pouce, je modifierais mon code ce soir. Un problème en moins ! GT Débuggué !! Link to comment Share on other sites More sharing options...
GT Turbo Posted September 30, 2005 Author Report Share Posted September 30, 2005 Comme cela ca marche mieux : lea G_CTRL,a0 move.l #1,(a0) Wait : move.l (a0),d0 btst #0,d0 bne.s Wait Hier soir une dizaine d'essais pour commencer a optimiser et apparement cela marche, pendant un moment j'ai pensé a utiliser l'inter, mais cela risque pas d'ètre plus lent ? Un traitement d'interruption par un 68000 c'est pas très rapide et en fin de compte, l'inter elle meme va juste placer le flag donc on fait un traitement pour rien, l'ancienne technique est plus rapide je penses non ? Parce que du coté Gpu, a la place de mettre 0 dans G_CTRL il suffit de mettre 2 (%10) pour generer l'inter. J'ai dégagé plusieurs compteur décimales que j'avais (5 au total) j'en ai dégagé 3 et je suis a 32 polygones. Ceci est une broutille. J'ai completement réecrit la routine de calcul des points au Gpu, il me reste juste a voir pour le passage de paramètres et la mon but c'est les 40. J'ai pensé a un super truc mais qui va me couter assez cher en ram 1600 octets. Par la j'ai les 2 routines (remplissage et calcul) a part, ensuite je comptes bien les recoller, mais il me faut les tableaux x min et x max de chaque ligne, au lieu d'utiliser la ram standard, je pourrais utiliser la ram Gpu, j'évites de toucher au bus et je profites de la vitesse d'accès mais la ou ca fait mal c'est cela : J'ai deux tableau de 200 lignes (Pour un écran de 200 lignes of course !), ce qui fait (2+2)*200=800 octets, mais le petit soucis c'est que le Gpu en interne ne fait que des accés 32 bits (4 octets) ce qui fait que mon tableau ferait (4+4)*200=1600 octets, ca fait cher, mais c'est le prix a payer pour que cela pousse. Pour résumé dans la ram Gpu faut que je cases : - le gestionnaire de liste - la routine de polygone - 1600 octets de tableau Un défi bien interressant, par contre après je passerais au Dsp, car la ram va bientot me manquer !! GT P.S. : Je viens de réaliser un truc, hier soir j'ai essayé ca : [code]lea G_CTRL,a0 move.l #1,(a0) Wait : btst #0,3(a0) bne.s Wait Et ca a planté direct, c'est simple 90% des registre de la Jag necessite un accès en long (4 octets) et la je fais un accès octet !! Moi et ma tête !! Link to comment Share on other sites More sharing options...
GT Turbo Posted September 30, 2005 Author Report Share Posted September 30, 2005 Après cette brève incursion dans la 3d je vais retourner afficher mes sprites (dès que la routine full Gpu fonctionnera), faut que je finisses mon gestionnaire de liste GT Reparti pour le sprites ! Link to comment Share on other sites More sharing options...
SCPCD Posted October 1, 2005 Report Share Posted October 1, 2005 GT Turbo : Hier soir une dizaine d'essais pour commencer a optimiser et apparement cela marche, pendant un moment j'ai pensé a utiliser l'inter, mais cela risque pas d'ètre plus lent ? Un traitement d'interruption par un 68000 c'est pas très rapide et en fin de compte, l'inter elle meme va juste placer le flag donc on fait un traitement pour rien, l'ancienne technique est plus rapide je penses non ? Ben en fait, ca depend.Le system d'interruption sera plus rapide je pense que dans le cas où l'on met en veille le 68000 en attendant une interruption.Parceque dans les autres cas, on spam le bus pour ne rien faire :lorsque l'on accede aux registres, le bus est ralentit par la lecture du 68000mais dans le cas où l'on veut faire des interruptions sans le mette en veille, c vrai que ca risque même d'être plus lent vu que lorsque le 68000 a une interruption, son niveau de priorité d'execution est plus élevé que normalement donc ralentit tout...(Mais pkoi ils ont mis un 68000 !!! et pas un autre DSP !!!) Link to comment Share on other sites More sharing options...
GT Turbo Posted October 1, 2005 Author Report Share Posted October 1, 2005 SCPCD : Le system d'interruption sera plus rapide je pense que dans le cas où l'on met en veille le 68000 en attendant une interruption. Un truc comme un : < Link to comment Share on other sites More sharing options...
GT Turbo Posted October 3, 2005 Author Report Share Posted October 3, 2005 Je suis en train de tout mettre dans le Gpu, donc voici en clair pour afficher un polygone comment cela va se passer : vous devrez juste passer : l'adresse de votre tableau de points (X,Y) qui devrait ressembler a ceci : Tab_XY: dc.w 160,100 dc.w 200,40 .... dc.w -1,-1 La dernière ligne indique a la routine la fin des coordonnées. La routine referme toute seule le polygone, puis l'adresse de votre écran et la couleur du polygone, un dernier truc l'offset pour passer a la ligne suivante, dans le cas ou votre écran ferait pas par exemple 320 colonnes voila ca devrait etre tout. si des personnes n'aime pas cette organisation, dite le moi, je veux pas reecrire toute une partie de code alors que j'aurais fini la routine !! GT En train de finaliser la routine Gpu Link to comment Share on other sites More sharing options...
GT Turbo Posted October 4, 2005 Author Report Share Posted October 4, 2005 M...... m...... et m...... Il va falloir que refixes mes objectits a la baisse..... Encore trompé a la ..................... hausse !!! J'ai pratiquement fini la routine 100% full Gpu, mais hier soir pour faire une transition dans mes 48 versions de mon code, j'ai fait une version intermédiaire, calcul des points 68000, remplissage au Gpu mais utilisation de la ram Gpu pour rentre les coordonnés X,Y et la je finis avec 39 polygones, si on compare au 7 du tout début au 68000, il y a pas photo, le rapport est de 5 fois plus (Et meme un peus plus !). La routine de calcul des points au 68000 est fini, mais j'ai quelques soucis a faire accepter mes saut conditionnels a Mad Mac. J'espère que ce soir la routine 100% Gpu sera opérationnel. J'avais visé les 40 polygones et bien on se fixe un nouvel objectif 48. GT toujours pas a fond !! Non !! Gpu Power !! P.S : Pour l'instant avec le code de restauration des listes au Gpu plus la routine de remplissage au Gpu (+Blitter) j'en suis meme a 350 octets !! Asm Power !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 6, 2005 Author Report Share Posted October 6, 2005 La routine est presque fini, j'ai enfin pu avoir des tests corrects (Voir dans cette meme partie ma petite prise de tete avec les sauts conditionnels), enfin il me reste encore deux bugs, qui font que ma recherche de Y min et Y max du polygone partent en fleurs, mais je penses que ce soir, la routine fonctionnera !! GT En 3D !! Link to comment Share on other sites More sharing options...
SCPCD Posted October 6, 2005 Report Share Posted October 6, 2005 En tout cas tu fais un sacret boulot !! J'ai hate d'avoir la demo sur une CF Link to comment Share on other sites More sharing options...
GT Turbo Posted October 6, 2005 Author Report Share Posted October 6, 2005 SCPCD : En tout cas tu fais un secret boulot !!J'ai hate d'avoir la demo sur une CF Je t'avoues que cela répresente pas tellement de boulot, je suis parti d'un source 68000, qu'on avait devellopé pour faire des polygones pour nos démos, après un peu d'optim pour s'adaptater au mode vidéo (C'est le pied l'optim en true color, plus de calcul de bit et d'offset en utilisant des techniques plus ou moins exotiques ! ) et après un transcodage pour le Gpu, qui faut le dire est très simple a programmer pour ceux qui s'y connaissent un peu en assembleur !!Pour l'instant le plus gros boulot c'est toi qui l'a fait (Voir CF !), faudrait encore que je fasses pareil pour la routine 3d, car voir un paquet de polygones fixes a l'écran c'est pas très répresentatif !! GT En train remplir et j'ai bientot fini !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 7, 2005 Author Report Share Posted October 7, 2005 lea G_CTRL,a0 move.l #1,(a0) Wait : btst #0,3(a0) bne.s Wait Ce style de boucle pour atteindre la fin d'un proc, ne marche pas du tout si le proc en question fait le travail trop vite !! Retour a nos polygones : La routine est entierement Gpu-isé, mais j'ai un débugguage de fou a faire, mon code a l'air instable comme un pingouin sur une savonnette !! Mon code fonctionne pas tout a faire normalement : l'affichage d'un polygone fait apparaitre un paquet de triangles et de formes plus ou moins bizzare et l'insertion d'un nop a différents endroits du code soit ne fait rien apparaitre, soit plante direct !! Sur ce coup je sens que je vais transpirer !!!! GT Paniqué !! Link to comment Share on other sites More sharing options...
SCPCD Posted October 7, 2005 Report Share Posted October 7, 2005 HHAAA... Les joies du debuggage du GPU !!! Que du bonheur !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 8, 2005 Author Report Share Posted October 8, 2005 SCPCD : HHAAA...Les joies du debuggage du GPU !!!Que du bonheur !! Boite de gatos !! Et Coca !! Et une nuit blanche dans la g.... !!Ce code va tourner très vite, j'ai des sprites a afficher !!Et c'est dans ce genre de moment, je m'apercois qu'il faudrait que je continues un peu le nouveau debugger !! Avec la possibilité de tracer du Gpu !! GT En train de debugger !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 12, 2005 Author Report Share Posted October 12, 2005 Areuhgfsdsfhdgiosf meme après deux boites de gato (Je vais vomir ! ), ce code ne fonctionne pas, j'ai réussi malgré tout a debugger deux Kdo, il me reste apparement un soucis conernant la routine qui appel la routine de tracé de ligne virtuel. Je me suis remotivé et c'est reparti !! GT En train de debugger !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 13, 2005 Author Report Share Posted October 13, 2005 J'ai laissé tomber les gatos !! j'attaques au petit suisse !! Etant donné que c'est apparement 'misereland' a debugger, j'ai transformé ma routine de tracé de ligne virtuel en routine de tracé de ligne réel, c'est plus simple a debugger !! GT En train de voir mes erreurs !! Link to comment Share on other sites More sharing options...
Fredifredo Posted October 13, 2005 Report Share Posted October 13, 2005 N'oublie pas d'avoir un oeil sur la doc officielle ou ya tous les bugs de répertorier Dans la version 8 ( 2000 ) et celle de mars 1995 , j'espère qu'ils parlent des mêmes bugs ! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 13, 2005 Author Report Share Posted October 13, 2005 L'affaire est dans le sac, je remplis mes polygones gones gones au Gpu u u u u u u !!! Je ferais des essais pour voir le gain cette nuit, j'ai un petit soucis de ram gpu, plutot d'organisation, car suite a mes tableaux placés avec un lance pierre je n'arrives plus a mettre ma routine de resturation de liste au Gpu, donc les chiffres serait pas comparables, enfin cela marche et je suis heureux !!! GT En train de ranger ma Gpu - Ram !! Link to comment Share on other sites More sharing options...
SCPCD Posted October 13, 2005 Report Share Posted October 13, 2005 Bon boulot !! Link to comment Share on other sites More sharing options...
GT Turbo Posted October 14, 2005 Author Report Share Posted October 14, 2005 Tous les chiffres tombent a l'eau !! J'ai lancé mon code et le chiffre est tombé 26 polygones !! Quoi ??? J'ai vérifié plusieurs fois et ben non, c'est le bon chiffre. J'ai repris mon code 68000 et vérifié, dans le code 68000, les points du polygone étaient calculés qu'une fois et pas a chaque polygone, ce que la routine 100% Gpu fait. Le 68000 dans ce cas de figure tourne a un polygone !! Donc d'un coté j'ai les boules a moitié (Car la routine Gpu n'est pas encore optimisé ! Ouf !) de l'autre le Gpu est 26 fois plus rapide que le 68000 !! Meme si on divise par deux du fait que le 68000 tourne a la moitié du Gpu, cela fait toujours un rapport de 12 !! Pour voir reellement ce que cela vaut, faudrait que j'adaptes une routine 3d et faire touner quelques objets car c'est sur que c'est pas visuellement parlant, meme moi je commences a en avoir marre de regarder ces polygones sans vie. GT Un peu dégouté mais je reparts de plus belle !! Link to comment Share on other sites More sharing options...
Azrael Posted October 14, 2005 Report Share Posted October 14, 2005 26 seulement !?! Glp... pas glop... quelle taille tes polygones ? Link to comment Share on other sites More sharing options...
GT Turbo Posted October 14, 2005 Author Report Share Posted October 14, 2005 Azrael : 26 seulement !?! Glp... pas glop... quelle taille tes polygones ? Pas Glop comme tu dis, on verra après optimisation. Sinon je suis en train de me demander si j'arriverais pas a utiliser le temps libre d'attente du blitter pour faire certains des calculs. Faut que je regardes tout cela.GT En train de réfléchir Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now