Die Suche ergab 352 Treffer

von Spiele Programmierer
24.06.2019, 20:16
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ich habe auch versucht, zu verstehen, was du getrieben hast. Wie schon teilweise erwähnt, kann ich folgende Grundgedanken nachvollziehen - ich versuche mal aufzulisten: * 8 16Bit Pixel passen in eine 128bit SSE Struktur * daher: Handling der Pixel zu je 4 Stück bei zwei Zeilen -> 8 Pixel auf einmal...
von Spiele Programmierer
23.06.2019, 12:35
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Sieht ziemlich ähnlich zu meinem Code aus. Inbesondere auch 16*2 Pixel auf einmal und 9.6 Festkomma. Unterschied ist, dass ich in meinem Code am Ende ja noch die ganze Sache mit dem Shuffle machen musste, weil Top-OR die RGB-Werte am Ende Interleaved abgelegt haben wollte. Außerdem: Then it's time t...
von Spiele Programmierer
22.06.2019, 19:33
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Freut mich wenn es bei dir auch so flott läuft. :-). Und ich denke du musst SSSE3 anschalten, nicht SSE3. Falls du es noch nicht kennst, der "Intrinsic-Browser" von Intel ist übrigens sehr nützlich: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined . Da steht u.a. auch welche...
von Spiele Programmierer
22.06.2019, 18:31
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ok habe bisschen rumgebastellt und massiv die Performance verbessert. In Zahlen in meinen (sehr provisorischen) Benchmark: - Ganz ursprünglich: ~600 ms - Ursprüngliche SSE Version: ~100 ms - Verbesserte SSE Version: ~12 ms Hier der relevante Code: #include <emmintrin.h> #include <tmmintrin.h> // Fac...
von Spiele Programmierer
22.06.2019, 17:16
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ich gucks mir mal an. Momemtan hat mich die RIESIGE Liste von SSE Befehlen erstmal erschlagen und ich muss schauen, was es da alles so gibt. Danke hierfür. Jo, absolut verständlich. :) Macht aber auch irgendwie einen Reiz aus wenn man sich mal einen Überblick verschafft hat. Und zum Teil gibt es au...
von Spiele Programmierer
22.06.2019, 15:35
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 774

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Da kann man auf jeden Fall noch mehr rauskitzeln. Eine Sache die auf jeden Fall geht wäre auf 16 Bit Integer zu gehen via _mm_mullo_epi16 , _mm_mulhi_epi16 und _mm_madd_epi16 . Man kann dann ja doppelt so viele Daten pro SIMD-Befehl verarbeiten. Wenn ich das gerade richtig sehe, werden im Moment auc...
von Spiele Programmierer
28.03.2019, 02:08
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 5800
Zugriffe: 995159

Re: Jammer-Thread

Hä? Habe nutze auch Thunderbird: Bei mir gibts kein Zwangsupdates. Da kommt ein Fenster, dass einem über das Update informiert und freundlich nachfragt, ob das Update heruntergeladen werden soll. Wenn man "ja" sagt wird nicht mal Thunderbird geschlossen, sondern es gibt noch die Option beim nächsten...
von Spiele Programmierer
03.10.2018, 18:59
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Visual C++] /d2noftol3 & dtol3()
Antworten: 8
Zugriffe: 1612

Re: [Visual C++] /d2noftol3 & dtol3()

Ob es eine Möglichkeit gibt, _ftol3 mit einer eigenen Version zu ersetzen? Diese Details finde ich ja immer besonders. interessant. Ich habe jetzt nochmal ein wenig darüber nachgedacht, und einen neuen Vorschlag (ohne x87): #include <emmintrin.h> unsigned int roundedToUInt4B(double f) { return (unsi...
von Spiele Programmierer
03.10.2018, 00:33
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Visual C++] /d2noftol3 & dtol3()
Antworten: 8
Zugriffe: 1612

Re: [Visual C++] /d2noftol3 & dtol3()

Godbolt kann 32 bit, einfach -m32 machen. ;) https://gcc.godbolt.org/z/KDNROV Clang macht cvttss2si zweimal: Einmal für den Fall dass es ganz normal geht für 0 - 0x7fffffff und ein zweites mal, einfach Verschoben, falls die Zahl in den Bereich 0x80000000 - 0xffffffff fällt und wählt dann das Ergebni...
von Spiele Programmierer
01.10.2018, 17:55
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] teure Ressource in Lambda moven
Antworten: 3
Zugriffe: 716

Re: [C++] teure Ressource in Lambda moven

Hast du denn sichergestellt, dass deine std::function<> nicht allokiert? Die übernimmt Ownership von deinem Lambda und wenn das zu groß ist, wird auch allokiert. Beim MSVC ab einer Pointergröße und bei Clang/GCC mit libstdc++ ab 2 Pointergrößen im Captureblock. (Quelle: Rumprobieren auf dem Compiler...
von Spiele Programmierer
30.09.2018, 23:10
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] teure Ressource in Lambda moven
Antworten: 3
Zugriffe: 716

Re: [C++] teure Ressource in Lambda moven

Das Problem ist, dass man std::function<> selbst kopieren kann. Und um jetzt die std::function<> kopieren zu können, muss das zugewiesene Lambda natürlich auch kopierbar sein. Das ist nunmal Teil des Interfaces. Du könntest dein Funktionsobject ja z.B. in eine andere Funktion he­r­ein­rei­chen. Spät...
von Spiele Programmierer
14.10.2017, 02:09
Forum: Algorithmen und Datenstrukturen
Thema: Bitschubsen für Fortgeschrittene, Teil I
Antworten: 4
Zugriffe: 1361

Re: Bitschubsen für Fortgeschrittene, Teil I

Um schnell geeignete Primzahlen zu bekommen ist diese Seite ganz praktisch: https://asecuritysite.com/encryption/random3?val=64 Als Alternative könntest du die 3 Koordinaten erst zusammenbauen und dann gemeinsam durch einen Hash schicken. uint64_t seed = nvp.z ^ ((uint64_t)nvp.x << 40) ^ ((uint64_t)...
von Spiele Programmierer
11.08.2017, 00:16
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: [C++] Mikrooptimierungs-Log

Hm, also vielleicht verstehe ich dich falsch, aber auf Godbolt scheint es zu gehen:
Click
von Spiele Programmierer
10.08.2017, 22:48
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: [C++] Mikrooptimierungs-Log

Das ist wirklich schrecklich. und was mache ich mit Strict Aliasing und 16-Bit-Zahlen? Zu Bjarne Stroustrup beten und ihm zum Opfer meinen Computer verbrennen? Strict Aliasing ist immer eine sehr komplizierte Angelegenheit. Aber ich bin mir ziemlich sicher, dass dieser Code auch jetzt Strict Aliasin...
von Spiele Programmierer
07.08.2017, 23:26
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: Jammer-Thread

Verdammt – ich muss hier noch /fp:fast an gehabt haben; da hast du völlig recht!
Also auf Godbolt kompilert Visual C++ das tatsächlich zu andps ohne weitere Flags... :roll:
von Spiele Programmierer
07.08.2017, 22:58
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: Jammer-Thread

Hm, habe ich was verpasst? Warum ist minps besser als minss ? Bei float absoluteOf(float x) { return x > 0 ? x : -x; } muss ich leider GCC/Clang rechtgeben, denn die elegante Version mit and verändert das Vorzeichen wenn x = NaN ist. Clang optimiert den Code erfolgreich mit -ffinite-math-only und GC...
von Spiele Programmierer
07.08.2017, 17:12
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: Jammer-Thread

Ja, das ist tatsächlich ziemlich albern. Interessant ist das Clang den idealen Code erzeugt, sobald man _mm_min_ss verwendet (d.h. nur eine einzige Instruction). Es ist nicht immer möglich, aber so eine Funktion setzt man am Besten einfach in standard C++ um. float minimumOf(float a, float b) { retu...
von Spiele Programmierer
05.08.2017, 14:22
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: Jammer-Thread

Ich sehe nicht den großen Unterschied zwischen Builtin Headern und Builtin Funktionen, aber ok wie du meinst.
Nur vielleicht solltest du dich dann nicht beschweren, denn das ist schon ein sehr extremer und ungewöhnlicher Ansatz. ;)
von Spiele Programmierer
05.08.2017, 12:28
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 78
Zugriffe: 64874

Re: Jammer-Thread

Aber warum benutzt du nicht einfach überall die Intel Intrinsics?
Die funktionieren doch überall, kein Mensch benutzt diesen __builtin Quatsch für SSE Code.

Der generierte Code ist auch identisch.)
von Spiele Programmierer
10.07.2017, 13:43
Forum: Algorithmen und Datenstrukturen
Thema: sound channel mixing - Formel ?
Antworten: 59
Zugriffe: 12292

Re: sound channel mixing - Formel ?

Wie kommst du zu dem Schluss, dass "es nicht stimmen" kann? Ich bin mir ziemlich ziemlich sicher, dass es schon stimmt. Das ist doch eigentlich auch völlig natürlich und Alltagserfahrung. Wenn man zwei Soundquellen hat, ist es natürlich lauter als nur eine einzige. (Ok nicht zwingend, sie könnten si...
von Spiele Programmierer
10.07.2017, 13:25
Forum: Algorithmen und Datenstrukturen
Thema: sound channel mixing - Formel ?
Antworten: 59
Zugriffe: 12292

Re: sound channel mixing - Formel ?

Ich bin mir nicht sicher, dass ich eure Rechnungen wirklich verstehe. Die Sache ist doch ganz klar Gesamt = A + B . Das folgert schließlich direkt aus dem Superpositionsprinzip. Ein Mischen nach dem Prinzip Gesamt = (A + B) * Faktor wobei der Faktor != 1 (Beim Durchschnitt Faktor = 0.5) ist, ergibt ...
von Spiele Programmierer
16.06.2017, 23:57
Forum: Grafikprogrammierung
Thema: [OpenGL 4.5] Text Rendering
Antworten: 8
Zugriffe: 2861

Re: [OpenGL 4.5] Text Rendering

Meines Wissens gibt es keine angemessenen Kerning-Funktionen in Freetype. Und man kann auch keine kompletten Wörter einfach so von FreeType rendern lassen. Es gibt FT_Get_Kerning , aber das unterstützt OpenType-Kerning nicht und es wird auch generell immer eher von der Funktion abgeraten. Wenn man W...
von Spiele Programmierer
11.06.2017, 22:33
Forum: Grafikprogrammierung
Thema: [OpenGL 4.5] Text Rendering
Antworten: 8
Zugriffe: 2861

Re: [OpenGL 4.5] Text Rendering

Vorweg, Schrompf hat völlig recht mit dem was er sagt. Nicht ständig die Texturdaten erneut hochzuladen und einen Texturatlas (d.h. alle einzelnen Bildchen in eine Textur packen) zu verwenden, ist absolut unerlässlich für akzeptable Performance. Ich habe in der Vergangenheit recht gute Erfahrung mit...
von Spiele Programmierer
25.03.2017, 18:49
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] kann ich mich auf die Float-Arithmetik verlassen?
Antworten: 19
Zugriffe: 4529

Re: [C++] kann ich mich auf die Float-Arithmetik verlassen?

Es gibt übrigens auch die Möglichkeit die optimalen Koeffizienten für so ein Approximationspolynom eines gegebenen Grads automatisch so zu bestimmen, dass der maximale relative bzw. absolute Fehler minimal ist. Ein kleines Program das ich in der Vergangenheit schon mal genutzt habe ist folgendes (di...
von Spiele Programmierer
23.10.2016, 18:41
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 5800
Zugriffe: 995159

Re: Jammer-Thread

Man kann doch trotzdem die Elemente mit SIMD vergleichen und verschieben solange kein Element entfernt wird.

Vorraussetzung ist natürlich, dass idR. nur wenige Elemente entfernt werden.
Das geht mit SIMD dann natürlich nur mit deutlich mehr Aufwand und zweifelhaften Gewinn. (_mm_shuffle_epi8)
von Spiele Programmierer
23.10.2016, 17:11
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 5800
Zugriffe: 995159

Re: Jammer-Thread

SSE, SIMD?
von Spiele Programmierer
23.10.2016, 13:40
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: (gelöst)[C++] std::vector, nur leichter
Antworten: 20
Zugriffe: 5874

Re: (gelöst)[C++] std::vector, nur leichter

http://en.cppreference.com/w/cpp/concept/Allocator hat geschrieben: a.construct(xptr, args) - Constructs an object of type X in previously-allocated storage at the address pointed to by xptr, using args as the constructor arguments
Allokatoren sind sehr seltsam in C++.
von Spiele Programmierer
22.10.2016, 15:05
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: (gelöst)[C++] std::vector, nur leichter
Antworten: 20
Zugriffe: 5874

Re: (gelöst)[C++] std::vector, nur leichter

Für große Allokationen greift "malloc" direkt auf "VirtualAlloc" zurück. Es gibt aber leider, leider kein "VirtualRealloc"... Obwohl das mit Paging ja sehr effizient möglich wäre! Sogar Linux hat "mremap". Ich würde mir auch wirklich wünschen es gäbe ein "VirtualRealloc". Je nach Anwendungsfall komm...
von Spiele Programmierer
09.10.2016, 13:10
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: (erledigt)[C++]struct auf zu kleinem Puffer standardkonform?
Antworten: 30
Zugriffe: 5042

Re: (erledigt)[C++]struct auf zu kleinem Puffer standardkonf

Hat das wirklich was mit Strict Aliasing zu tun? Bei dem Cast von void * muss der Compiler annehmen, dass an der Stelle wirklich ein S liegt. Sonst wäre ja z.B. malloc() eine ewige Verletzung von Strict Aliasing. Nun - entweder liegt an der Stelle ein Objekt S oder eben nicht. Wenn der erste Fall z...
von Spiele Programmierer
09.10.2016, 12:12
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: (erledigt)[C++]struct auf zu kleinem Puffer standardkonform?
Antworten: 30
Zugriffe: 5042

Re: (erledigt)[C++]struct auf zu kleinem Puffer standardkonf

Nun, der Standard garantiert da wohl nix. Mit Visual C++ sollte diese Operation aber trotzdem funktionieren, weil es kein Strict Aliasing kennt. Für andere Compiler gibt es __attribute__((may_alias)). #if defined(__GNUC__) || defined(__llvm__) || defined(__clang__) #define MAY_ALIAS __attribute__((m...