2013-01-01から1年間の記事一覧

関数コールグラフもどきを出してみる

前回*1まででmakefileから関数呼び出しをCSVへ抜き出す用意ができたので、関数コールグラフもどきに変換するツールを作ってみた。 利用イメージ [maminus@localhost shm]$ call_grapher.exe net-socket.csv net-core-sock.csv > call-graph.txt のような感じ…

関数呼び出しツールを既存のmakefileで使う

前回*1作ったツールは解析対象のソースファイル名を先に持ってきたりとちょっと動かすのが面倒だった。 実際にはソースっていろんなコンパイルオプションがついていたり、インクルードパス設定が複雑だったりする。 ソースを解析するときにそれらを加味して…

clangで関数呼び出しを抜き出す

今までずっと「C言語のソースコードを解析する技術」をものにしようと色々勉強していたのが、clangでようやくなんとかなりそうな予感がしてきたのでやったことをまとめようと思う。 これまで挫折した方法 今まではチャレンジしては挫折を繰り返してきた。 …

IDXGISwapChain::Present()を基準に動いている件

前々からID3D11DeviceContext::Flush()を呼んでもいまいちコマンドが即座に発射されている気がしなかったり、GPU PerfStudio 2やPIX先生がIDXGISwapChain::Present()を発射しないとログれなかったりと、いやな予感はしてたんだけど実際に計測プログラムをGUI…

3Dコントロールではまった話

C++BuilderXE3 update2での話。他のバージョンは試してない。しばらく見ないうちにBuilderがVCL以外にFireMonkeyってのを積んできていたので「アプリの見た目を簡単にリッチっぽくできるしちょっと遊んでみるか」と思っていじってたんだけど、例によってはま…

DLLの作成と外部DLLの呼び出し

やり残していたclangでのDLL作成と外部DLLの呼び出しをやってみた。 DirectX呼び出し .libは32bit版(x86ディレクトリに入っている方)をリンク時に指定したらビルドできた。 あと、bccと同様に「__in」とか「__in_bcount_opt」とかをdefineで無効化しないとコ…

clang+boostでWinアプリ開発

今までWindowsでgccとかって面倒そうなので敬遠していたけど、自分の周りが全部Win7 64bitになってしまい、TurboC++/C++Builder2006がXP-modeを入れないと使えなくなってしまった。実際にXP-modeを使ってみたらデータのやり取りが超面倒で死にそうになったの…

bcc64への移行

XE3のupdate 1が出てbcc64がついに使えるようになったということで、急いでXE3を購入したんだけど、既存のbcc32でビルドしていたDirectXアプリをbcc64でビルドしようとしたら、どハマリして色々やってようやくビルドできるようになった。ということでその過…

5870性能評価(5)

話としては、昨日*1の続き。そしてついでに性能評価にからめてみる。 すっごい遅い件 シェーダのこの部分 #ifdef GI_IS_B uint3 rgb = uint3(Gid.x, Gid.y, Gid.z*NUM_THREAD_X*NUM_THREAD_Y*NUM_THREAD_Z+GI); #else uint3 rgb = uint3(Gid.x*NUM_THREAD_X*…

float->UNORM変換丸め確認

ということで、先日*1予告していたROPのfloat->UNORM変換が単純な「切り捨て」ではなく、「近い数値へ丸め」となっているかどうかの検証をやってみた。 検証プログラムの概要 こんな感じのプログラムで検証をしたいと思う。 ComputeShaderで3DテクスチャにRG…

GPU ShaderAnalyzerで遊んでみた

ComputeShaderを叩いていたらどこにボトルネックがあるのか気になったのでGPU ShaderAnalyzer v1.59.3208を入れて試しに解析させてみた。 対象ソース 以前記事にしたHSV変換コードをかけてみた。 ここで再掲する。 // hsv.hlsl float3 rgb2hsv(float3 rgb) {…

Windowsの基本っぽいヘッダファイル

小ネタ。というか、自分用のメモ。 bccのv5.82環境(TurboC++)でwindows.hを読まずに最小限のヘッダをincludeするとどれなのか調べてみた。 (PCがしょぼいとコンパイル遅いので…orz) 各ヘッダに入ってそうな定義類 .hの中身を見て確認したらざっとこんなもの…

自作ラッパの一部をさらしてみる

次の記事が長くなりそうなのと、そろそろソースを載せるたびに細かいコード断片を出すのがアレなので共通ライブラリとして作っている自作のDirectX11のラッパコードから今後掲載する可能性がありそうなコードをさらしてみる。 基本的にペラペラの薄いラッパ…

RGBHSV変換を実装してみた

Wikipediaの変換式とかを見ながら実装してみた。*1まずRGB->HSV float3 rgb2hsv(float3 rgb) { float3 hsv; float rgb_max, rgb_min; float diff; float base; float div1; float div2; rgb_max = max(max(rgb.x, rgb.y), rgb.z); rgb_min = min(min(rgb.x, …

3Dテクスチャの謎

また盛大にハマってしまった。 今回はD3D11_TEX3D_UAV::WSize様とD3D11_MAPPED_SUBRESOURCE様の2名様に翻弄されてました…やりたかったことはComputeShaderで3Dテクスチャに書き込んでそれをCPU側で確認する、ってだけの簡単なお仕事のはずだったんだけど、…

GDIとDirectX

激しく今さら感がするけど、以前ID3DX10Fontの代わりにDrawText()してたやつについて。 RGB値が反転してるっぽい感触がしていたっぽい件について情報が整理できたのでまとめ。まずWindowsの色を扱うAPIは色の表現としてCOLORREF型とRGBQUAD型の2種類のどち…