ソースを参照

GLX: Added glXSwapIntervalMESA.

bkaradzic 12 年 前
コミット
bb8531d9a2
1 ファイル変更20 行追加4 行削除
  1. 20 4
      src/glcontext_glx.cpp

+ 20 - 4
src/glcontext_glx.cpp

@@ -12,8 +12,11 @@
 
 
 namespace bgfx
 namespace bgfx
 {
 {
+	typedef int (*PFNGLXSWAPINTERVALMESAPROC)(uint32_t _interval);
+
 	PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB;
 	PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB;
 	PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT;
 	PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT;
+	PFNGLXSWAPINTERVALMESAPROC glXSwapIntervalMESA;
 	PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
 	PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
 
 
 #	define GL_IMPORT(_optional, _proto, _func) _proto _func
 #	define GL_IMPORT(_optional, _proto, _func) _proto _func
@@ -159,11 +162,20 @@ namespace bgfx
 		}
 		}
 		else
 		else
 		{
 		{
-			glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalSGI");
-			if (NULL != glXSwapIntervalSGI)
+			glXSwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalMESA");
+			if (NULL != glXSwapIntervalMESA)
 			{
 			{
-				BX_TRACE("Using glXSwapIntervalSGI.");
-				glXSwapIntervalSGI(0);
+				BX_TRACE("Using glXSwapIntervalMESA.");
+				glXSwapIntervalMESA(0);
+			}
+			else
+			{
+				glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalSGI");
+				if (NULL != glXSwapIntervalSGI)
+				{
+					BX_TRACE("Using glXSwapIntervalSGI.");
+					glXSwapIntervalSGI(0);
+				}
 			}
 			}
 		}
 		}
 
 
@@ -188,6 +200,10 @@ namespace bgfx
 		{
 		{
 			glXSwapIntervalEXT(s_display, s_window, interval);
 			glXSwapIntervalEXT(s_display, s_window, interval);
 		}
 		}
+		else if (NULL != glXSwapIntervalMESA)
+		{
+			glXSwapIntervalMESA(interval);
+		}
 		else if (NULL != glXSwapIntervalSGI)
 		else if (NULL != glXSwapIntervalSGI)
 		{
 		{
 			glXSwapIntervalSGI(interval);
 			glXSwapIntervalSGI(interval);