Enthalten moderne GPUs Barrel Shifter?

8

Ich bin mir bewusst, dass die meisten modernen GPUs, obwohl sie für Gleitkomma ausgelegt sind, heutzutage in Bezug auf die Ganzzahlleistung mehr oder weniger gleichwertig sind, mit ein paar Einschränkungen wie dem Fehlen eines verschmolzenen Multiplikationszusatzes. Ich bin mir jedoch nicht sicher, wie dies für Schichtoperationen gilt. Ich mache Marching Cubes auf der GPU, schreibe zunächst eine 32-Bit-Packposition für jeden Oberflächenwürfel und entpacke diese dann in einem späteren Durchgang zu den tatsächlichen Eckpunkten in diesem Cube wie folgt:

ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
                         packedPos >> 10 & 0x3FF,
                         packedPos & 0x3FF);

Mir ist gerade eingefallen, ob Shader-Einheiten heutzutage Barrel-Shifter enthalten. Mache ich hier 2 Schichten oder 30?

EDIT >> Ich bin ein Idiot ... Danke für die Antworten, Leute, nützlich zu wissen, aber ich habe das alles falsch gemacht. Ich sollte nur das RGB10_A2UI-Texturformat verwenden und dann mit einer einzelnen Anweisung zum Laden / Speichern von Bildern packen / entpacken, anstatt selbst mit Bitshifts herumzuspielen.

RE_EDIT >> Oder nicht ... Diese Methode funktioniert anscheinend bei roten Kästchen, aber nicht bei grünen, also zurück zu Bitverschiebungen.

russ
quelle
24-Bit-Shifter werden in Gleitkommazahlen mit einfacher Genauigkeit verwendet, um Mantissen auszurichten, sodass der Compiler möglicherweise einige generiert, aber ich glaube nicht, dass Sie 30 sehen werden.
Daniel M Gessel

Antworten: