だから、私は何をしたいです:CPUコピーをしないGPU操作から生成されたDXT5圧縮ピクセルデータをアップロードするにはどうすればよいですか?
は(CUDAと)GPUメモリに(私の場合、AES-256で)任意のアルゴリズムで暗号化したファイルをロードします。
私たちが現在持っているすべてのGPU並列awesomenessでファイルを復号化し、GPUメモリに残しておきます。
OpenGL(4.3)に、DDS DXT5から読み込んだり解凍しなければならないテクスチャがメモリにあることを伝えてください。
ポイント3は私の疑問がある場所です。 OpenGLで圧縮されたDDS DXT5をロードするには、圧縮タイプ(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)とイメージデータバッファへのポインタを使用してOpenGL :: glCompressedTexImage [+ 2D | 3D | 2DARB ...]を呼び出す必要があります。
これを短くするには、既にGPUメモリにあるテクスチャバッファアドレスをOpenGL(DDS形式)に渡す方法がありますか?このオプションを指定しないと、私はAESが戻ってCPUにファイルを復号化し転送し、GPUに再びそれをロードするためにOpenGLを伝える必要があるでしょう....任意のヘルプや短い例について
感謝を;)
これは良い考えではありません。まず、ファイルを復号化をパラレルでサポートするブロック連鎖モードで暗号化していることを確認する必要があります(並列処理はGPU全体で行われます)。次に、テクスチャは、GPU上のすべてをセットアップして時間を節約するためのオーバーヘッドに十分な大きさでなければなりません。さらに、CPUはAES用の専用ハードウェアを備えています。 GPUはそうしない。 –
@ColonelThirtyTwo:それらのどれも彼が求めているものではありません。 AES崩壊などは無関係のノイズです。質問は、圧縮されたテクスチャデータを生成するGPU操作(AESは生成される方法ですが、これはもう重要ではありません)がCPUにコピーされずにOpenGLテクスチャに格納できるかどうかという点で、問題はよく焦点を当てています。ちょうど騒々しい。 –
AESはすでに128ビットのブロックで暗号化しています.gKrypt(http://gkrypt.com/)のようなソリューションでは、すでに膨大な圧縮解除ブーストが行われています。私が使用しているテクスチャは、2kから4k(または今年の8kの終わりまで)のサイズになります。しかし、あなたの懸念のためにthx :)! –