Apakah GPU modern mengandung pemindah barel?

8

Saya menyadari bahwa sebagian besar GPU modern, meskipun dirancang untuk floating point, kurang lebih setara dalam kinerja integer hari ini, dengan beberapa peringatan seperti kurangnya penambahan multiply yang menyatu. Saya tidak yakin bagaimana ini berlaku untuk operasi shift. Saya sedang melakukan Marching Cubes pada GPU, awalnya menulis posisi 32-bit yang dikemas untuk setiap kubus permukaan kemudian membongkar ini di kemudian lulus ke simpul yang sebenarnya di kubus itu, seperti ini:

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

Terpikir oleh saya untuk bertanya-tanya apakah unit shader memiliki pemindah barel di dalamnya akhir-akhir ini? Apakah saya melakukan 2 shift di sini atau 30?

Sunting >> Saya idiot ... Terima kasih atas jawabannya, berguna untuk mengetahui, tapi saya sudah salah tentang semua ini. Saya seharusnya hanya menggunakan format tekstur RGB10_A2UI kemudian mengepak / membongkar dengan satu instruksi memuat / menyimpan gambar daripada mengotak-atik bithifts sendiri.

RE_EDIT >> Atau tidak ... Metode ini tampaknya bekerja pada kotak merah tetapi tidak pada yang hijau, jadi itu kembali ke bit-shift.

russ
sumber
24 bit shifter digunakan dalam floating point presisi tunggal untuk menyelaraskan mantra, sehingga kompiler dapat menghasilkan beberapa, tetapi saya tidak berpikir Anda akan melihat 30.
Daniel M Gessel

Jawaban: