Seite 60 von 255
Re: Jammer-Thread
Verfasst: 27.04.2012, 11:39
von glassbear
So langsam versteh ich, warum Code in China Geld kostet: Der ist einfach billig. Im negativen Sinn. Am Ende schauen sich das dann doch 1-2 Leute von uns an und schreiben Teile neu, weil es so nicht ins System passt :?
Re: Jammer-Thread
Verfasst: 27.04.2012, 19:36
von kaiserludi
Doxygen at its best:
Source:
Code: Alles auswählen
namespace A
{
class Foo
{
};
}
namespace B
{
using namespace A;
class Foo
{
};
class Bar : public B::Foo
{
};
}
Doxygens Inheritance Diagram:
B::Foo
B::Bar : public A::Foo
Argh :x
Wozu habe ich denn bitte schön Namespaces, wenn ich dann aufgrund des Doku-Tools doch wieder Präfixes brauche?
EDIT: Habe den Reproduziercode mal gefixt, so dass das Problem tatsächlich damit auftritt, und ihn auch simplifiziert . Das Problem ist offensichtlich das "using namespace". Der Compiler hat dagen hingegen keine Probleme.
Im Originalcode ist das using natürlich in einer Sourcedatei, während die Deklarationen in Headern sind, sonst könnt ich mir die namespaces ja gleich sparen.
Re: Jammer-Thread
Verfasst: 28.04.2012, 14:36
von CodingCat
Ein halber Tag DirectCompute, und schon fangen GPU-beschleunigte Anwendungen (Browser, Plugins) an zu spinnen. :roll:
Re: Jammer-Thread
Verfasst: 28.04.2012, 20:27
von Schrompf
Und es stellte sich heraus, dass eine default-konstruierte std::map eben doch gleich was allokiert. Damit verbietet es sich, dass ich all meinen Objekten eine Sammlung beliebiger Eigenschaften mitgebe - die werden nur selten genutzt, aber wenn selbst die Nicht-Nutzung so teuer ist, kann ich das nicht verantworten.
Re: Jammer-Thread
Verfasst: 29.04.2012, 12:12
von Krishty
Micrsofts Umschreibung für
Sie können die Datei nicht überschreiben, da sie in einem anderen Programm gemappt ist.

- mapped.png (9.69 KiB) 5482 mal betrachtet
Re: Jammer-Thread
Verfasst: 29.04.2012, 12:36
von CodingCat
sizeof(A::B) ist verboten?!? Und wo wir schon dabei sind, warum gibt es kein offsetof(A::B) ...
Re: Jammer-Thread
Verfasst: 29.04.2012, 13:17
von Artificial Mind
Krishty hat geschrieben:Micrsofts Umschreibung für Sie können die Datei nicht überschreiben, da sie in einem anderen Programm gemappt ist.
Ich würde ja fast sagen, dass das an deiner deutschen Windows-Version liegt. Aber dazu müsste man mit der englischen Meldung vergleichen ;)
Re: Jammer-Thread
Verfasst: 29.04.2012, 13:49
von eXile
FormatMessage hat geschrieben:The requested operation cannot be performed on a file with a user-mapped section open.
Ein 08/15-Benutzer kann so wie so weder mit der deutschen noch der englischen Fehlermeldung etwas anfangen. ;)
Re: Jammer-Thread
Verfasst: 29.04.2012, 13:58
von Artificial Mind
eXile hat geschrieben:FormatMessage hat geschrieben:The requested operation cannot be performed on a file with a user-mapped section open.
Ein 08/15-Benutzer kann so wie so weder mit der deutschen noch der englischen Fehlermeldung etwas anfangen. ;)
Das ist vollkommen richtig, aber die englische Message hätte Krishty mehr geholfen, right?
Re: Jammer-Thread
Verfasst: 29.04.2012, 14:17
von Krishty
Eine interessante Frage ist: Würde die Fehlermeldung anders aussehen, falls ich die Datei beim Mappen nicht schließen würde? (Meine File Mapping-Funktion ist ziemlich hoch optimiert.) Gleich mal ausprobieren.
Vorher:
Blah::FooFile foo(reinterpreted<ASCIICharacter>(fileRepository[Text::range("i\\dont.care")])); // warning C4709: comma operator within array index expression
wtf
Nachtrag: Wow; tatsächlich: Wenn geprüft wird, ob eine Datei überschrieben werden kann, wird die Fehlermeldung anhand der User Handles auf die Datei bestimmt; nicht anhand der Kernel Handles. Außerdem beharrt der Explorer bei offenem User Handle darauf, dass es sich bei der Datei um den übergeordneten Ordner handelt:
Da sieht man mal wieder, was für bekloppte Konsequenzen es haben kann, wenn man um jedes Handle kämpft.
Re: Jammer-Thread
Verfasst: 29.04.2012, 19:48
von Krishty
== hat in C++ Vorrang vor bitweisem &
Re: Jammer-Thread
Verfasst: 30.04.2012, 08:33
von antisteo
CodingCat hat geschrieben:Ein halber Tag DirectCompute, und schon fangen GPU-beschleunigte Anwendungen (Browser, Plugins) an zu spinnen. :roll:
Kein Wunder, wenn du dir das Design einer Grafikkarte anschaust. Die ist einfach nicht für Mehrbenutzer- oder gar Mehrprogrammbetrieb geeignet.
Re: Jammer-Thread
Verfasst: 30.04.2012, 08:53
von Lynxeye
antisteo hat geschrieben:CodingCat hat geschrieben:Ein halber Tag DirectCompute, und schon fangen GPU-beschleunigte Anwendungen (Browser, Plugins) an zu spinnen. :roll:
Kein Wunder, wenn du dir das Design einer Grafikkarte anschaust. Die ist einfach nicht für Mehrbenutzer- oder gar Mehrprogrammbetrieb geeignet.
Öhm, doch? Nvidia hat seit Ewigkeiten (Riva TNT) Hardwarekontexte und bei den Radeons gibt es in den letzten Generationen auch mehrere Ringe. Und ein ordentliches Virtual Memory System mit MMU auf der Grafikkarte gibt es seit NV50 bzw. Cayman. Du hast also sehr wohl die Möglichkeit einzelne Prozesse auf Hardwareebene zu isolieren.
Re: Jammer-Thread
Verfasst: 30.04.2012, 14:19
von kaiserludi
Oxygen kommt echt überhaupt nicht mit namespaces klar:
Code: Alles auswählen
namespace A
{
class Foo
{
};
}
namespace B
{
class Foo : A::Foo
{
};
}
namespace C
{
class Foo : B::Foo
{
};
}
namespace D
{
class Foo : C::Foo
{
};
}
führt mit Option "hide scope names" zu folgendem interessanten Vererbungsgraphen:

Re: Jammer-Thread
Verfasst: 01.05.2012, 13:42
von Krishty
Die einzige Wirkung, die __declspec(noalias) hat, ist, dass Peephole Optimizations wegfallen und mein Text größer wird, weil überall nutzlose movs zusätzliche Register verschwenden.
Re: Jammer-Thread
Verfasst: 01.05.2012, 18:19
von Krishty
it's the one the compiler itself generated
one the compiler itself generated
Ich versuche mir gerade vorzustellen, wie Visual C++ Quelltext in eine textbasierte Intermediate Representation übersetzt

Re: Jammer-Thread
Verfasst: 02.05.2012, 11:16
von CodingCat
Entbinden von UAVs im Compute Shader:
deviceContext->CSSetUnorderedAccessViews(0, D3D11_PS_CS_UAV_REGISTER_COUNT, NullUAVs, nullptr);
Entbinden von UAVs im Pixel Shader:
deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(0, nullptr, nullptr, 0, 0, nullptr, nullptr);
Und wehe ihr versuchts hiermit, dann crasht euch Parallel NSight gleich mal ohne Fehlermeldung weg:
deviceContext->OMSetRenderTargetsAndUnorderedAccessViews(0, nullptr, nullptr, 0, D3D11_PS_CS_UAV_REGISTER_COUNT, NullUAVs, nullptr);
Der Vollständigkeit halber, folgendes hat absolut keine Wirkung:
deviceContext->CSSetUnorderedAccessViews(0, 0, nullptr, nullptr);
Re: Jammer-Thread
Verfasst: 03.05.2012, 00:01
von CodingCat
Der Lohn eines langen Arbeitstages ... Fehler ohne Ende und 1 FPS
Aber voll "dynamisch"! ;)
Re: Jammer-Thread
Verfasst: 03.05.2012, 00:14
von Artificial Mind
Sind das Real-time Reflektionen? xD
Re: Jammer-Thread
Verfasst: 03.05.2012, 07:57
von antisteo
Artificial Mind hat geschrieben:Sind das Real-time Reflektionen? xD
Das Real-Time kannst du streichen
CodingCat hat geschrieben:und 1 FPS

Re: Jammer-Thread
Verfasst: 03.05.2012, 09:09
von j.klugmann
Wenn sie realistisch sind, reicht es auch nur das "-Time" zu streichen. :P
Re: Jammer-Thread
Verfasst: 03.05.2012, 10:31
von Artificial Mind
Code: Alles auswählen
Entity::~Entity()
{
mCustomProperties = new QHash<QString, QString>();
}
Dies ist auf mehrere Art und Weisen eklig ...
Ich liebe Studenten-Projekte mit mehreren Mitgliedern :)
Nachtrag:
dazu kommt:
Code: Alles auswählen
std::string Entity::getCustomProperty(std::string id)
{
return ((QString*) mCustomProperties->find(QString.fromStdString(id).value()))->toStdString();
}
Re: Jammer-Thread
Verfasst: 03.05.2012, 16:40
von kaiserludi
glassbear hat geschrieben:So langsam versteh ich, warum Code in China Geld kostet: Der ist einfach billig. Im negativen Sinn. Am Ende schauen sich das dann doch 1-2 Leute von uns an und schreiben Teile neu, weil es so nicht ins System passt :?
Das ist nicht nur in China so. Merkt euch: Source nie etwas aus, bei dem der Coder auch mal denken muss...
Ich finde die WTFs von jeweils intergalaktischen Ausmaßen gerade wieder containerschiffweise.
Re: Jammer-Thread
Verfasst: 03.05.2012, 18:43
von CodingCat
Erst zwei Wochen echte GPU-Programmierung und schon kann ich sämtlichen Hass der GPU-Rendering-R&D-Community auf die Rendering Pipeline voll und ganz nachvollziehen. Eigentlich ist alles da, man kommt nur nicht ran. Konservative Rasterisierung? Nach dem Clipping ein Kinderspiel, aber sorry, letzter Stop Geometry Shader. Der ist nicht nur unendlich umständlich, und ohne eigene Clipping-Implementierung im Shader gegenüber Near-Plane-Clipping kaum robust zu bekommen, sondern obendrein noch unfassbar lahm (extra Geometrie!). Fertig verarbeitete Geometrie statt in den Pixel Shader in den Compute Shader weiterleiten? Pustekuchen, parallel ist nicht. Mindestens mal riesige temporäre Puffer anlegen. :evil:
Re: Jammer-Thread
Verfasst: 03.05.2012, 19:41
von Schrompf
Never change a running system. Hab mal eben schnell von AngelScript 2.20.3 auf 2.23.1 aktualisiert, weil ich eine kleine Skript-Helferklasse nicht für den alten Stand runterladen wollte. Und jetzt läuft KEIN EINZIGES verdammtes Skript mehr im Spiel. Nach einigen Stunden bin ich zur Erkenntnis gelangt, dass AngelScript anscheinend seit Neuestem alle bisherigen Skripte zerstört, bevor es ein neues Stück Code kompiliert. Demzufolge verweisen alle Code-IDs bis auf die letzte auf ungültigen Code. Tolle Wurst.
Re: Jammer-Thread
Verfasst: 03.05.2012, 19:45
von Krishty
Visual C++’
/Ox (
Full Optimization) impliziert nicht
/GF (
Enable String Pooling). Wenn String Pooling nicht eingeschaltet ist, landen völlig wahllos unreferenzierte Strings in der Exe.
Nachtrag: Ach; klar –
jetzt habe auch
ich verstanden, warum
/O2 besser ist als
/Ox …
Re: Jammer-Thread
Verfasst: 03.05.2012, 20:29
von eXile
Ich hätte tatsächlich schon dreimal beinahe auf deinen
Post geantwortet, ob
/O2 nicht besser wäre; irgendwie zeigt sich, dass man im Zweifelsfall doch lieber posten sollte, als es zu unterlassen.
Daher direkt mein Nachschlag:
/fp:fast verändert auch hier nichts,
/arsch:AVX verändert auch nichts (das kriegt man mit der
XState-API raus, brandneu für Windows 7 SP1, es gilt tatsächlich
(FeatureMask & XSTATE_MASK_AVX) == 0; hier noch beliebigen Rant über die Operatorreihenfolge von
& und
== einfügen), das Fused-Multiply-Add ist in letzten Sekunde aus dem AVX-Standard
geflogen (obwohl es noch in der offiziellen Intel-Doku drin ist, aber es gibt in Visual Studio keine Intrinsics für FMA), und ich darf mich gerade in die Verwendung von RWTexture2Ds und atomare Operatoren reinlesen. Darüber hinaus kann man anscheinend mit MiniMax-Polynomen die Standard-Implementierungen von sin/cos/etc. um einiges schlagen, und
hier ist wieder ein grandioses Beispiel, wie ein Blogpost
nicht aussehen sollte, ich bastelte an einem eigenen
alloca das bisher nur um die Ohren fliegt, und wer eine Begründung haben will, warum Phong/Blinn-Phong der meistüberladene Begriff überhaupt ist, schaut mal
hier rein.
Ich weiß nicht, ob das Leben tatsächlich
so sein sollte; ich glaube aber schon.
Re: Jammer-Thread
Verfasst: 04.05.2012, 18:38
von CodingCat
Ich will die von meiner GPU fertig geclippte Geometrie. Jetzt sofort! :(
Re: Jammer-Thread
Verfasst: 04.05.2012, 21:37
von dot
Wieso denn? Ich bezweifle dass eine GPU überhaupt irgendwas in Richtung Clipping betreibt...
http://www.cs.unc.edu/~olano/papers/2dh-tri/2dh-tri.pdf ;)
Re: Jammer-Thread
Verfasst: 04.05.2012, 22:02
von eXile