月別アーカイブ: 2015年1月

GeForce の OpenGL 4.5 ES3_1_Compatibility は AEP 対応

OpenGL 4.5 から GL_ARB_ES3_1_compatibility が含まれるようになりました。
Mobile 向け API OpenGL ES 3.1 と互換性があります。

OpenGL 4.1    GL_ARB_ES2_compatibility
OpenGL 4.3    GL_ARB_ES3_compatibility
OpenGL 4.5    GL_ARB_ES3_1_compatibility

実際に GeForce GTX 650 (GK107 Kepler) で OpenGL ES 3.1 context を作成したのが
下記の結果です。

GL_VERSION: OpenGL ES 3.1 NVIDIA 347.09
GL_RENDERER: GeForce GTX 650/PCIe/SSE2
GL_VENDOR: NVIDIA Corporation
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10

Extension:
GL_NV_internalformat_sample_query
GL_EXT_base_instance
~
GL_OES_vertex_half_float
GL_ANDROID_extension_pack_es31a

Extension として GL_ANDROID_extension_pack_es31a が含まれており、
OpenGL ES 3.1 AEP に対応していることがわかります。
つまり Android 向け Tegra K1 同様に OpenGL ES API でも D3D11 相当の機能を
利用することができるわけです。

省略部分を含めてより詳しい結果は下記のページに追加しました。

Desktop GPU Extensions

下記には Tegra K1 (Kepler) のデータを載せていますので、比べてみると
Tegra K1 と GeForce GTX 650 の結果ほとんど同じであることがわかります。

CPU/GPU OpenGL ES Extension (Mobile GPU)

同じ GPU Core かつドライバもおそらく同一なのでしょう。
Android で動くなら Linux も同様で、共通化されているものと思われます。
実際に OpenGL ES 3.1 context を作成することができました。

// Windows WGL
static const int  opengl_es31[]= {
  WGL_CONTEXT_MAJOR_VERSION_ARB,   3,
  WGL_CONTEXT_MINOR_VERSION_ARB,   1,
  WGL_CONTEXT_FLAGS_ARB,           0,
  WGL_CONTEXT_PROFILE_MASK_ARB,    WGL_CONTEXT_ES2_PROFILE_BIT_EXT,
  0,
};
HGLRC hglrc= wglCreateContextAttribsARB( hDC, 0, opengl_es31 );
// X11 GLX
static const int  opengl_es31[]= {
  GLX_CONTEXT_MAJOR_VERSION_ARB,   3,
  GLX_CONTEXT_MINOR_VERSION_ARB,   1,
  GLX_CONTEXT_FLAGS_ARB,           0,
  GLX_CONTEXT_PROFILE_MASK_ARB,    GLX_CONTEXT_ES2_PROFILE_BIT_EXT,
  None,
};
GLXContext context= glXCreateContextAttribsARB( display, config, 0, True, opengl_es31 );

上では Version 3.1 を指定していますが、Android と同じく ES 2.0 の Context に
対しても 3.1 を返すようです。
この手順は下記のページにも追加しました。

Desktop 向け OpenGL ES 2.0 / OpenGL ES 3.0 / OpenGL ES 3.1 (AEP) 実行環境

Desktop でも Kepler 世代 GeForce を載せているならそもそも同じ GPU なので、
以前の Emulator のようなツールに頼る必要がないわけです。
逆に Mobile GPU で OpenGL ES を使う意味も無くなりつつあります。
↓ NVIDIA SHILED Tablet では OpenGL 4.5 に対応したことが発表されています。

Impress NVIDIA、SHIELDタブレット用Android 5.0.1アップデートを配信開始

ハイエンド向け API はそろそろ統合してもよいのかもしれません。

関連エントリ
Android Nexus 6 Adreno 420 も OpenGL ES 3.1 AEP 対応 (Direct3D 11相当)
Android 5.0 Nexus 10 Mali-T604 は OpenGL ES 3.1 対応
Nexus 9 Tegra K1 と ARM 64bit Denver
NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応
OpenGL ES 3.1 は OpenGL 4.x 相当で ComputeShader に対応
OpenGL 4.3 と GL_ARB_ES3_compatibility