![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > Transverspeed PPC603e -> BVision | [ - Search - New posts - Register - Login - ] |
1 2 3 -4- | [ - Post reply - ] |
2005-05-23, 11:34 h thomas Posts: 7721 User |
15 Bit is A1 R5 G5 B5. Das überschüssige Bit ist entweder unbenutzt oder beschreibt die Transparenz. 16 Bit ist R5 G6 B5. Die Entwickler-Doku von CGX und P96 müßte diese Informationen enthalten. Ansonsten einfach mal bei Google suchen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2005-05-24, 12:18 h Ralf27 Posts: 2779 User |
16Bit sind schon recht interesant. Ich werd später einfach mal in mein Programm so ein 24->16 Konverter einbauen und mal sehn wie die Sache mit 16Bit rennt. PS: Konverter in Basic. ![]() PPS: Ich werd irgend wann mal einfach mal aus Fun das ganze mit AmigaBasic laufen lassen. Mal sehn wie das läuft. ![]() ![]() ![]() -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2005-05-27, 08:43 h MarkusPohlmann Posts: 164 User |
Erstmal ein grosses Dankeschön an alle hier in diesem Thread! Ich habe die Tipps erfolgreich "mitbenutzen" können um eine meiner Grafikroutinen (bisher 4Byte pro Pixel ARGB und mit WritePixelArray) auf 16Bit (mit besagter zweiten Bitmap) runterzubauen, PC Screenmodes zu erkennen und zu verwenden, dabei um den gefühlten Faktor 2 bis 3 mal so schnell zu laufen und nur noch halb so viel Speicher zu verbrauchen! Und ich dachte, ich hätte vorher schon was über Grafikkartenprogrammierung gewusst... ![]() Nochmals Danke! [ - Answer - Quote - Direct link - ] |
2005-05-27, 12:10 h Ralf27 Posts: 2779 User |
Zitat: Dazu ist doch das Forum mit seinen User da. ![]() Ich hab da aber eine Frage: Ist bei dir der Speed mit BltBitMap höher als mit WritePixelArray? Ich hab leider festgestellt das es bei mir nicht der Fall ist, obwohl es eigentlich schneller sein müßte. Da war bzw. ist schon depremierend. Aber denn 16Bit-Mode werde ich auch bald mal "geniesen". ![]() Aber zur Zeit hab ich andere Sachen vor und bin weniger am Computer. Vorallem das Wetter ist einfach zu genial als am Computer zu sitzen. In diesem Sinne --> ![]() (Zur Zeit hab ich leider auch etwas denn Faden an meinem Programm verloren...) -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2005-05-27, 12:53 h MarkusPohlmann Posts: 164 User |
Hm, also ich habe das jetzt nicht explizit nachgemessen, kann ich ja aber vielleicht heute mal nachholen. Der Hauptknackpunkt wodurch ich eigentlich Geschwindigkeit gewinne ist die Speicherersparnis. Meine Grafikroutine bisher: Ich habe einen Bildpuffer ULONG *Buffer in mit 640*480*4 Bytes Jetzt kopiere ich die Grafik dafür zusammen und zwar pro Pixel 4 Byte im Format PIXFM_ARGB. WritePixelArray füttere ich dann mit dem Buffer so dass das auf die Grafikkarte kommt (zur Zeit jetzt auch 16Bit Screen, war vorher aber sogar passend 24). Meine Grafikroutine neu, wie im Prinzip hier im Thread beschrieben: Ich allokiere eine passende zweite Bitmap, locke die und verwende einen Pointer UWORD *Grafik den ich auf die Adresse der Bitmapdaten lege. Jetzt kopiere ich die Grafik aus nur noch zwei Byte pro Pixel zusammen, direkt in diese Bitmap. Anschliessen "un-gelocked" und mit BltBitmap rüber zur Grafikkarte. Ich denke, die nun "fehlenden" 640*480*2 Bytes sind der Knackpunkt, aber ich kann mal Messen, wie lange was dauert. Vielleicht gibt's ja noch was zu tunen? P.S.: Interessant ist allerdings, dass mein Programm für sich alleine gestartet - auch mehrmals - bestens läuft und auch allen Speicher wieder freigibt. Im Debugger laufen gelassen crasht das Programm nach einmaligem Lauf die Entwicklungsumgebung vielleicht (Icons sind schonmal hinüber), nach dem zweiten Lauf 100%ig. Da huschen mir wohl noch ein paar Bit in falsche Speicherbereiche... ![]() [ - Answer - Quote - Direct link - ] |
2005-05-27, 17:34 h whose Posts: 2156 User |
Zitat: Naja, inzwischen kenne ich den Grund, hätte aber auch früher drauf kommen können *stirnklatsch* ![]() Im Grunde passiert sowohl bei WritePixelArray() als auch bei BltBitmap()&Co. unter CGFX/P96 jeweils das Gleiche, wenn die Bitmap im FastRAM liegt: Ist der Bildschirmmodus der zur Bitmap passende, MemCopy(), wenn nicht, Transfer FastRAM->VideoRAM mit impliziter Konvertierung. Das bedeutet, daß sowohl bei WritepixelArray() als auch bei BltBitMap() jeweils die höchstmögliche Transferrate (des 68K-Prozessors über Zorro bzw. verkrüppeltem Mini-PCI) erreicht wird. Über den Bus bedeutet ja automagisch auch "aus dem FastRAM", da kann BlitBitMap() kaum etwas an Speedgewinn erreichen (wie auch, wenn der Blitter gar nicht an die Daten herankommt? ![]() Liegt die Bitmap im GraKa-Speicher wirds per BlitBitMap() enorm schnell. Allerdings funktioniert in diesem Fall auch nur BltBitMap() ![]() Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
2005-05-27, 21:02 h Ralf27 Posts: 2779 User |
Schon klar das bei beiden Funktionen das gleiche passiert, aber wenn die Bitmap schon in dem Format vorliegt wie es auch der Grafikkartenscreen braucht, dann müßte das doch schneller gehn als mit WritePixelArray und Konvertierung. Aber das bringt mich zur Schlussfolgerung das die Konvertierung von der Grafikkarte gemacht wird? Ist dies möglich?!? Das würde einiges erklären. -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2005-05-28, 03:47 h whose Posts: 2156 User |
Zitat: Jain. Das "Problem" dabei ist, daß bei der Übertragung über den Bus eine Pause eingelegt werden muß (der ist halt nicht ganz so schnell wie das CPU-RAM-Gespann). Das bemerkst Du besonders gut bei Zorro-Systemen. In dieser "Pause" wird (unabsichtlich, aber praktisch ![]() Schön kann man das auf 040ern beobachten, die bei 24Bit enorm einknicken, auch wenn sie über Zorro3 übertragen können (und bei einem 060er die "Pause" bei der Übertragung für die Konvertierung reicht). Bei denen reicht die Zeit der "Pause" nicht ganz, um die Konvertierung zu erledigen. Da ist dann angesagt, erstmal die Konvertierung zu beenden und dann auf das nächste "Transfer-Fenster" des Zorro-Bus zu warten. Bin durch meinen anderen 1200er mit CV64/3D drauf gestoßen. Der ist bei 24Bit nämlich enorm lahm, die selbe Karte in meinem 4000/060 war deutlich "schneller" ![]() Zitat: Auch wieder: Jain. Ich weiß nicht genau, welche der GraKas für den Amiga solche Hardware integriert hatten (ich glaub, die Merlin2 wars), aber das waren wenn nur ganz, ganz wenige. Das CD32 besitzt mit dem Akiko so etwas ähnliches, das ist ein Chunky2Planar-Konverter in Hardware. Allerdings kann der keine Chunky-Formate in ein anderes verwandeln. Die modernen Chips (wie der Permedia2) besitzen sowas nicht mehr (wofür auch?). Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
2005-05-28, 12:53 h MarkusPohlmann Posts: 164 User |
Folgender Codeschnippsel... GetSysTime(&T); BltBitMapRastPort (FBitMap,0,0,CGFXFenster->RPort,0,0,640,480,0xc0); GetSysTime(&T2); printf("Vorher: %i,%in",T.tv_secs,T.tv_micro); printf("Nachher: %i,%in",T2.tv_secs,T2.tv_micro); ...erzeugt folgenden Output: Vorher: 864818167,239089 Nachher: 864818167,239895 Vorher: 864818167,250641 Nachher: 864818167,251448 Vorher: 864818167,265044 Nachher: 864818167,265984 Vorher: 864818167,278957 Nachher: 864818167,279762 Vorher: 864818167,291288 Nachher: 864818167,292093 Vorher: 864818167,304694 Nachher: 864818167,305496 Vorher: 864818167,353339 Nachher: 864818167,354146 ... Also lassen sich 640*480*2Byte (FBitmap ist für 16Bit angelegt) in ca. 800 Microsekunden zur Graka blitten. Mit dem Schnippsel... GetSysTime(&T); WritePixelArray(PICTURE,0,0,640*4,CGFXFenster->RPort,0,480*bufscreen,6 40,480,RECTFMT_ARGB); GetSysTime(&T2); printf("Vorher: %i,%in",T.tv_secs,T.tv_micro); printf("Nachher: %i,%in",T2.tv_secs,T2.tv_micro); bekomme ich folgende Ergebnisse: Vorher: 864819193,29647 Nachher: 864819193,183012 Vorher: 864819193,187700 Nachher: 864819193,340497 Vorher: 864819193,344554 Nachher: 864819193,498045 Vorher: 864819193,502258 Nachher: 864819193,655640 Vorher: 864819193,659723 Nachher: 864819193,812165 Vorher: 864819193,818087 Nachher: 864819193,970781 Vorher: 864819193,976247 PICTURE ist *ULONG in Grösse 640*480*4 Byte. Also dauert das umrechnen der 4Byte in 2Byte und darstellen ca. 6000 Microsekunden. Ist leider durch die unterschiedliche Datenhaltung kein sehr brauchbarer Vergleich, oder? Das füllen der Puffer für beide Routinen kann ich leider nicht vergleichen, bzw. der Aufwand lohnt nicht. Ist beides sehr stark im Programm verteilt und angepasst. Die Hardware ist ein 68060er mit Mediator und Voodoo3 Graka (Picasso). [ - Answer - Quote - Direct link - ] |
2005-05-28, 13:01 h whose Posts: 2156 User |
Zitat: Naja, WritePixelArray() ist nicht gerade als Geschwindigkeitswunder bekannt (warum auch immer das so ist). Insofern ist der Vergleich nicht besonders brauchbar. Besser wäre es gewesen, das Ganze ebenfalls mit BlitBitMapRastPort() zu erledigen (was normalerweise problemlos funktionieren sollte). Das dürfte den Faktor auf <4 drücken. Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
2005-05-29, 12:19 h Ralf27 Posts: 2779 User |
Der Test war wohl ohne denn BlazeWCP-Patch, der wohl auch für Grafikkarten gut ist. Denn mit diesem Patch wird WritePixelArray wirklich sehr viel schneller. Wie schon geschrieben, WritePixelArray und BltBitMapRastport halt sich bei mir die Waage, bzw. BltBitMapRastport ist teilweise langsamer als WritePixelArray. Aber das ganze halt mit Patch. Auf meinem Rechner laufen FBlit und BlazeWCP. Das beschleunigt schon merklich! (AGA) -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2005-05-30, 08:45 h MarkusPohlmann Posts: 164 User |
Ich habe keinen dieser Patches am laufen. Den Speedtest hätte ich ja gerne auch mit 24 Bit und Bitmap gemacht, aber dazu müsste ich zuviel in dem Programm umbauen. Wäre möglich, aber vorher diesem Thread hatte ich keine Ahnung wie und jetzt ist mir der Umbau zu umständlich. [ - Answer - Quote - Direct link - ] |
2005-05-30, 10:29 h Ralf27 Posts: 2779 User |
Zitat: Die Patchs bringen vorallem unter AGA extrem viel. Ich vermute auch mal, das es was unter CybergraphX bringt, getestet habe ich das aber noch nicht. Wegen dem Umbau: Bei mir ist es genau anderstherum: 24 -> 16bit ![]() Allerdings hab ich jetzt schon seit Wochen nix mehr an meinem Programm gemacht... ![]() -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2005-05-30, 11:20 h whose Posts: 2156 User |
Zitat: Hm, ich glaube, ich muß hier mal kurz einhaken ![]() BlazeWCP patcht und beschleunigt WriteChunkyPixels() und WritePixelArray8(). WritePixelArray() (ohne 8! ![]() ![]() Bisher habe ich jedenfalls immer wieder gelesen, daß diese Funktion wohl deutlich schneller sein könnte, aber leider nicht ist. Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
2005-05-30, 19:43 h Ralf27 Posts: 2779 User |
Stimmt, du hast recht. Ich hab wohl schon zu lange nichts mehr programmiert. ![]() Wenn ich das jetzt richtig verstanden habe, dann ist noch nicht alles in CybergraphX eingebaut was möglich wäre, bzw. teilweise sind die Funktionen etwas langsam. Sehe ich das richtig? Aber ich denk mal das es keine Weiterentwicklung geben wird... -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
1 2 3 -4- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Transverspeed PPC603e -> BVision | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |