Mac OS X 10.9 Mavericks の OpenGL 4.1 対応と Windows 8.1 Intel HD 4000 Driver

MacOS X が 10.9 Mavericks から OpenGL 4.1 対応になりました。
特筆すべき点は Intel HD 4000 でも OpenGL 4.1 が使えることです。
Windows のドライバはまだ OpenGL 4.0 のままなので逆転が起こっています。

しかしながら Windows のドライバも、Windows 8.1 向けの
15.33.5.64.3316 (10.18.10.3316) では改善されていることがわかりました。

● Mac OS X 10.9

下記の通り 4.1 になっています。

// Mac OS X 10.9 Mavericks

GL_VERSION: 4.1 INTEL-8.18.26
GL_RENDERER: Intel HD Graphics 4000 OpenGL Engine
GL_VENDOR: Intel Inc.
GL_SHADING_LANGUAGE_VERSION: 4.10

実際に試してみましたが、NSOpenGLView の NSOpenGLPFAOpenGLProfile には
シンボルが追加されていませんでした。

以前の記事で書いたように NSOpenGLProfileVersion3_2Core のままで構わないようです。
OpenGL 4.1 の context が作られています。

ちなみに Direct3D11 対応の RADEON でも OpenGL 4.1 までです。

// Mac OS X 10.9 Mavericks

GL_VERSION: 4.1 ATI-1.14.21
GL_RENDERER: AMD Radeon HD 6750M OpenGL Engine
GL_VENDOR: ATI Technologies Inc.
GL_SHADING_LANGUAGE_VERSION: 4.10

Direct3D 10 世代の GPU では OpenGL 3.3 が使えるようになりました。

// Mac OS X 10.9 Mavericks

GL_VERSION: 3.3 NVIDIA-8.18.27 310.40.05f01
GL_RENDERER: NVIDIA GeForce 9400 OpenGL Engine
GL_VENDOR: NVIDIA Corporation
GL_SHADING_LANGUAGE_VERSION: 3.30

まとめると下記の通り。

                 D3D11世代GPU    D3D10世代GPU
---------------------------------------------
Mac OS X 10.8    OpenGL 3.2      OpenGL 3.2
Mac OS X 10.9    OpenGL 4.1      OpenGL 3.3

GPU 毎の詳細は下記のページに載せています。

Desktop GPU Extensions

● Windows 8.1 と Intel HD 4000

Intel HD 4000 の Windows ドライバも Windows 8.1 向けに
15.33.5.64.3316 (10.18.10.3316) がリリースされています。
直前に出た Windows 8.0 用 15.31.17.64.3257 (9.18.10.3257) と比べると
いろいろと機能拡張されていることがわかります。(詳細は下記リンクより)

Intel HD Graphics 4000 OpenGL 4.0 extensions

// Windows 8.0 (2013/09/11)

GL_VERSION: 4.0.0 - Build 9.18.10.3257
GL_RENDERER: Intel(R) HD Graphics 4000
GL_VENDOR: Intel
GL_SHADING_LANGUAGE_VERSION: 4.00 - Build 9.18.10.3257

// Windows 8.1 (2013/10/17)

GL_VERSION: 4.0.0 - Build 10.18.10.3316
GL_RENDERER: Intel(R) HD Graphics 4000
GL_VENDOR: Intel
GL_SHADING_LANGUAGE_VERSION: 4.00 - Build 10.18.10.3316

例えば Atomic Counter や BPTC (Direct3D の BC6H/BC7) texture など
4.2 以上の機能も徐々に取り入れられているようです。

特に GL_ARB_debug_output 対応は、開発者にとっては非常に大きな意味を持つはずです。
glDebugMessageCallbackARB() でメッセージが送られてくることを確認しました。
これで RADEON/GeForce/Intel HD すべての GPU で debug_output が
使えることになります。

もう一点、これまで 64bit bulid で glUseProgram() がクラッシュする
現象に悩まれており、HD 4000 では 64bit バイナリが使えませんでした。
Windows 8.1 x64 + 15.33.5.64.3316 (10.18.10.3316) の組み合わせでは
64bit バイナリがきちんと動作しています。

sRGB framebuffer の問題はまだ完全ではないようです。
Uniform mat3x4 の問題は未検証です。

関連エントリ
Mac OS X で OpenGL の描画 (Xcode5/retina)
OpenGL のエラー判定と OpenGL 4.3 Debug Output