unsigned bpp; /* bytes per pixel */
} YV12Image;
+enum EFIELDSYNC
+{
+ FS_NONE,
+ FS_TOP,
+ FS_BOT
+};
+
enum ERENDERFEATURE
{
RENDERFEATURE_GAMMA,
#ifdef HAS_GL
#include <locale.h>
+
#include "LinuxRendererGL.h"
#include "Application.h"
#include "settings/Settings.h"
*
*/
+#include "system.h"
+
#ifdef HAS_GL
+#include "system_gl.h"
#include "guilib/FrameBufferObject.h"
#include "guilib/Shader.h"
float bottom;
};
-enum EFIELDSYNC
-{
- FS_NONE,
- FS_TOP,
- FS_BOT
-};
-
struct YUVRANGE
{
int y_min, y_max;
#if HAS_GLES == 2
+#include "system_gl.h"
+
#include "xbmc/guilib/FrameBufferObject.h"
#include "xbmc/guilib/Shader.h"
#include "settings/VideoSettings.h"
float bottom;
};
-enum EFIELDSYNC
-{
- FS_NONE,
- FS_TOP,
- FS_BOT
-};
-
struct YUVRANGE
{
int y_min, y_max;
#include "OverlayRendererUtil.h"
#include "OverlayRendererGL.h"
#ifdef HAS_GL
-#include "LinuxRendererGL.h"
+ #include "LinuxRendererGL.h"
#elif HAS_GLES == 2
-#include "LinuxRendererGLES.h"
-#include "guilib/MatrixGLES.h"
+ #include "LinuxRendererGLES.h"
+ #include "guilib/MatrixGLES.h"
#endif
#include "RenderManager.h"
#include "cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayImage.h"
*/
#pragma once
+#include "system_gl.h"
#include "OverlayRenderer.h"
-#ifdef HAS_GL
-#include <GL/glew.h>
-#endif
-
class CDVDOverlay;
class CDVDOverlayImage;
class CDVDOverlaySpu;
};
#if defined(HAS_GL) || defined(HAS_GLES)
+#include "system_gl.h"
class CRenderCaptureGL : public CRenderCaptureBase
{
*/
#include "system.h"
+#if defined(HAS_GL)
+ #include "system_gl.h"
+#endif
#include "RenderManager.h"
#include "threads/CriticalSection.h"
#include "video/VideoReferenceClock.h"
#include "settings/GUISettings.h"
#include "settings/AdvancedSettings.h"
-#ifdef _LINUX
-#include "PlatformInclude.h"
-#endif
-
#if defined(HAS_GL)
#include "LinuxRendererGL.h"
#elif HAS_GLES == 2
m_pRenderer = NULL;
}
+void CXBMCRenderManager::GetVideoRect(CRect &source, CRect &dest)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ m_pRenderer->GetVideoRect(source, dest);
+}
+
+float CXBMCRenderManager::GetAspectRatio()
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->GetAspectRatio();
+ else
+ return 1.0f;
+}
+
/* These is based on CurrentHostCounter() */
double CXBMCRenderManager::GetPresentTime()
{
m_captures.erase(it);
}
+void CXBMCRenderManager::SetViewMode(int iViewMode)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ m_pRenderer->SetViewMode(iViewMode);
+}
+
void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/)
{
if(timestamp - GetPresentTime() > MAXPRESENTDELAY)
}
}
+void CXBMCRenderManager::Reset()
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ m_pRenderer->Reset();
+}
+
+RESOLUTION CXBMCRenderManager::GetResolution()
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->GetResolution();
+ else
+ return RES_INVALID;
+}
+
float CXBMCRenderManager::GetMaximumFPS()
{
float fps;
}
+unsigned int CXBMCRenderManager::GetProcessorSize()
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->GetProcessorSize();
+ return 0;
+}
+
+// Supported pixel formats, can be called before configure
+std::vector<ERenderFormat> CXBMCRenderManager::SupportedFormats()
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->SupportedFormats();
+ return std::vector<ERenderFormat>();
+}
+
int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic)
{
CSharedLock lock(m_sharedSection);
return index;
}
+bool CXBMCRenderManager::Supports(ERENDERFEATURE feature)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->Supports(feature);
+ else
+ return false;
+}
+
+bool CXBMCRenderManager::Supports(EDEINTERLACEMODE method)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->Supports(method);
+ else
+ return false;
+}
+
+bool CXBMCRenderManager::Supports(EINTERLACEMETHOD method)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->Supports(method);
+ else
+ return false;
+}
+
+bool CXBMCRenderManager::Supports(ESCALINGMETHOD method)
+{
+ CSharedLock lock(m_sharedSection);
+ if (m_pRenderer)
+ return m_pRenderer->Supports(method);
+ else
+ return false;
+}
+
+EINTERLACEMETHOD CXBMCRenderManager::AutoInterlaceMethod(EINTERLACEMETHOD mInt)
+{
+ CSharedLock lock(m_sharedSection);
+ return AutoInterlaceMethodInternal(mInt);
+}
+
EINTERLACEMETHOD CXBMCRenderManager::AutoInterlaceMethodInternal(EINTERLACEMETHOD mInt)
{
if (mInt == VS_INTERLACEMETHOD_NONE)
#include <list>
-#if defined (HAS_GL)
- #include "LinuxRendererGL.h"
-#elif HAS_GLES == 2
- #include "LinuxRendererGLES.h"
-#elif defined(HAS_DX)
- #include "WinRenderer.h"
-#elif defined(HAS_SDL)
- #include "LinuxRenderer.h"
-#endif
-
+#include "cores/VideoRenderers/BaseRenderer.h"
+#include "guilib/Geometry.h"
+#include "guilib/Resolution.h"
#include "threads/SharedSection.h"
#include "threads/Thread.h"
#include "settings/VideoSettings.h"
#define ERRORBUFFSIZE 30
+class CWinRenderer;
+class CLinuxRenderer;
+class CLinuxRendererGL;
+class CLinuxRendererGLES;
+
class CXBMCRenderManager
{
public:
~CXBMCRenderManager();
// Functions called from the GUI
- void GetVideoRect(CRect &source, CRect &dest) { CSharedLock lock(m_sharedSection); if (m_pRenderer) m_pRenderer->GetVideoRect(source, dest); };
- float GetAspectRatio() { CSharedLock lock(m_sharedSection); if (m_pRenderer) return m_pRenderer->GetAspectRatio(); else return 1.0f; };
+ void GetVideoRect(CRect &source, CRect &dest);
+ float GetAspectRatio();
void Update(bool bPauseDrawing);
void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255);
void SetupScreenshot();
void Capture(CRenderCapture *capture, unsigned int width, unsigned int height, int flags);
void ManageCaptures();
- void SetViewMode(int iViewMode) { CSharedLock lock(m_sharedSection); if (m_pRenderer) m_pRenderer->SetViewMode(iViewMode); };
+ void SetViewMode(int iViewMode);
// Functions called from mplayer
bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format);
m_overlays.AddCleanup(o);
}
- inline void Reset()
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- m_pRenderer->Reset();
- }
- RESOLUTION GetResolution()
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->GetResolution();
- else
- return RES_INVALID;
- }
+ void Reset();
+
+ RESOLUTION GetResolution();
float GetMaximumFPS();
inline bool Paused() { return m_bPauseDrawing; };
inline bool IsStarted() { return m_bIsStarted;}
double GetDisplayLatency() { return m_displayLatency; }
- bool Supports(ERENDERFEATURE feature)
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->Supports(feature);
- else
- return false;
- }
+ bool Supports(ERENDERFEATURE feature);
+ bool Supports(EDEINTERLACEMODE method);
+ bool Supports(EINTERLACEMETHOD method);
+ bool Supports(ESCALINGMETHOD method);
- bool Supports(EDEINTERLACEMODE method)
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->Supports(method);
- else
- return false;
- }
-
- bool Supports(EINTERLACEMETHOD method)
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->Supports(method);
- else
- return false;
- }
-
- bool Supports(ESCALINGMETHOD method)
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->Supports(method);
- else
- return false;
- }
-
- EINTERLACEMETHOD AutoInterlaceMethod(EINTERLACEMETHOD mInt)
- {
- CSharedLock lock(m_sharedSection);
- return AutoInterlaceMethodInternal(mInt);
- }
+ EINTERLACEMETHOD AutoInterlaceMethod(EINTERLACEMETHOD mInt);
double GetPresentTime();
void WaitPresentTime(double presenttime);
void UpdateResolution();
- unsigned int GetProcessorSize()
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->GetProcessorSize();
- return 0;
- }
-
- // Supported pixel formats, can be called before configure
- std::vector<ERenderFormat> SupportedFormats()
- {
- CSharedLock lock(m_sharedSection);
- if (m_pRenderer)
- return m_pRenderer->SupportedFormats();
- return std::vector<ERenderFormat>();
- }
-
#ifdef HAS_GL
- CLinuxRendererGL *m_pRenderer;
+ CLinuxRendererGL *m_pRenderer;
#elif HAS_GLES == 2
- CLinuxRendererGLES *m_pRenderer;
+ CLinuxRendererGLES *m_pRenderer;
#elif defined(HAS_DX)
- CWinRenderer *m_pRenderer;
+ CWinRenderer *m_pRenderer;
#elif defined(HAS_SDL)
- CLinuxRenderer *m_pRenderer;
+ CLinuxRenderer *m_pRenderer;
#endif
+ unsigned int GetProcessorSize();
+
+ // Supported pixel formats, can be called before configure
+ std::vector<ERenderFormat> SupportedFormats();
+
void Present();
void Recover(); // called after resolution switch if something special is needed
*/
#include "system.h"
-#include "VideoFilterShader.h"
-#include "utils/log.h"
-#include "utils/GLUtils.h"
-#include "ConvolutionKernels.h"
+#if defined(HAS_GL) || HAS_GLES == 2
#include <string>
#include <math.h>
-#if defined(HAS_GL) || HAS_GLES == 2
-
-using namespace Shaders;
-using namespace std;
+#include "VideoFilterShader.h"
+#include "utils/log.h"
+#include "utils/GLUtils.h"
+#include "ConvolutionKernels.h"
#if defined(HAS_GL)
#define USE1DTEXTURE
#define TEXTARGET GL_TEXTURE_2D
#endif
+using namespace Shaders;
+using namespace std;
+
//////////////////////////////////////////////////////////////////////
// BaseVideoFilterShader - base class for video filter shaders
//////////////////////////////////////////////////////////////////////
*
*/
+#include "system.h"
+
#if defined(HAS_GL) || HAS_GLES == 2
+#include "system_gl.h"
-#include "guilib/Shader.h"
-#include "../../../settings/VideoSettings.h"
-using namespace Shaders;
+#include "guilib/Shader.h"
+#include "settings/VideoSettings.h"
namespace Shaders {
float bottom;
};
-enum EFIELDSYNC
-{
- FS_NONE,
- FS_TOP,
- FS_BOT,
-};
-
-
struct YUVRANGE
{
int y_min, y_max;
*/
#include "system.h"
+#include "cores/VideoRenderers/RenderFlags.h"
#include "windowing/WindowingFactory.h"
#include "settings/AdvancedSettings.h"
#include "settings/GUISettings.h"
#include "system.h"
#if defined(HAS_GL) || HAS_GLES == 2
+#include "FrameBufferObject.h"
#include "settings/Settings.h"
#include "windowing/WindowingFactory.h"
-#include "FrameBufferObject.h"
-#include "utils/log.h"
#include "utils/GLUtils.h"
+#include "utils/log.h"
#if HAS_GLES == 2
// For OpenGL ES2.0, FBO are not extensions but part of the API.
-#define glGenFramebuffersEXT glGenFramebuffers
-#define glDeleteFramebuffersEXT glDeleteFramebuffers
+#define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER
+#define glBindFramebufferEXT glBindFramebuffer
+#define glGenFramebuffersEXT glGenFramebuffers
+#define glDeleteFramebuffersEXT glDeleteFramebuffers
#define glFramebufferTexture2DEXT glFramebufferTexture2D
#define glCheckFramebufferStatusEXT glCheckFramebufferStatus
-#define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0
+#define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0
#define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE
#endif
return true;
}
+// Begin rendering to FBO
+bool CFrameBufferObject::BeginRender()
+{
+ if (IsValid() && IsBound())
+ {
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo);
+ return true;
+ }
+ return false;
+}
+
+// Finish rendering to FBO
+void CFrameBufferObject::EndRender()
+{
+ if (IsValid())
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+}
+
#endif
#include "system.h" // for HAS_GL
#if defined(HAS_GL) || HAS_GLES == 2
+#include "system_gl.h"
//
// CFrameBufferObject
// glBindTexture(GL_TEXTURE_2D, fbo->Texture());
//
-#if HAS_GLES == 2
-// For OpenGL ES2.0, FBO are not extensions but part of the API.
-#define glBindFramebufferEXT glBindFramebuffer
-#define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER
-#endif
-
class CFrameBufferObject
{
public:
// Create a new texture and bind to it
bool CreateAndBindToTexture(GLenum target, int width, int height, GLenum format,
- GLenum filter=GL_LINEAR, GLenum clamp=GL_CLAMP_TO_EDGE);
+ GLenum filter=GL_LINEAR, GLenum clampmode=GL_CLAMP_TO_EDGE);
// Return the internally created texture ID
GLuint Texture() { return m_texid; }
// Begin rendering to FBO
- bool BeginRender()
- {
- if (IsValid() && IsBound())
- {
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo);
- return true;
- }
- return false;
- }
-
+ bool BeginRender();
// Finish rendering to FBO
- void EndRender()
- {
- if (IsValid())
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- }
+ void EndRender();
private:
GLuint m_fbo;
#include "GUITexture.h"
+#include "system_gl.h"
+
class CGUITextureGL : public CGUITextureBase
{
public:
#ifndef GUILIB_GUITEXTUREGLES_H
#define GUILIB_GUITEXTUREGLES_H
-
+-
#pragma once
/*
#include "GUITexture.h"
+#include "system_gl.h"
+
class CGUITextureGLES : public CGUITextureBase
{
public:
#include "system.h"
#if defined(HAS_GL) || HAS_GLES == 2
+
+#include "Shader.h"
#include "settings/Settings.h"
#include "filesystem/File.h"
-#include "Shader.h"
#include "utils/log.h"
#include "utils/GLUtils.h"
+#ifdef HAS_GLES
+#define GLchar char
+#endif
+
#define LOG_SIZE 1024
using namespace Shaders;
#include <string>
#if defined(HAS_GL) || defined(HAS_GLES)
+#include "system_gl.h"
namespace Shaders {
#ifndef GUILIB_TEXTURE_H
#define GUILIB_TEXTURE_H
+#include "system.h"
+#if defined(HAS_GL) || HAS_GLES == 2
+#include "system_gl.h"
+#endif
#include "gui3d.h"
#include "utils/StdString.h"
virtual void DestroyTextureObject() = 0;
virtual void LoadToGPU() = 0;
- XBMC::TexturePtr GetTextureObject() const
- {
#ifdef HAS_DX
+ LPDIRECT3DTEXTURE9 GetTextureObject() const
+ {
return m_texture.Get();
+ }
#else
+ GLuint GetTextureObject() const
+ {
return m_texture;
-#endif
}
+#endif
+
unsigned char* GetPixels() const { return m_pixels; }
unsigned int GetPitch() const { return GetPitch(m_textureWidth); }
unsigned int GetRows() const { return GetRows(m_textureHeight); }
#ifdef HAS_DX
CD3DTexture m_texture;
#else
- XBMC::TexturePtr m_texture;
+ GLuint m_texture;
#endif
unsigned char* m_pixels;
bool m_loadedToGPU;
typedef D3DPalette* LPDIRECT3DPALETTE8;
-#if defined(HAS_GL) || defined(HAS_GLES)
-
-namespace XBMC
-{
- typedef void* DevicePtr;
- typedef GLuint SurfacePtr;
- typedef GLuint TexturePtr;
- typedef void* PalettePtr; // elis change it
- typedef GLint PixelFormat; // elis change it
-}
-
-#if defined(_LINUX) && !defined(GL_GLEXT_PROTOTYPES)
-#define GL_GLEXT_PROTOTYPES
-#endif
-
-#endif // HAS_GL
-
-#ifdef HAS_DX
-
-namespace XBMC
-{
- typedef LPDIRECT3DDEVICE9 DevicePtr;
- typedef LPDIRECT3DTEXTURE9 TexturePtr;
- typedef LPDIRECT3DSURFACE9 SurfacePtr;
- typedef LPDIRECT3DPALETTE8 PalettePtr;
-};
-
-#define DELETE_TEXTURE(texture) texture->Release()
-
-#endif // HAS_DX
-
-#ifdef HAS_GLES
-
-#define GLchar char
-
-#endif
#endif // GUILIB_GUI3D_H
*
*/
+#include "system.h"
#include "filesystem/File.h"
#include "settings/Settings.h"
-#include "system.h"
#include "guilib/Texture.h"
#include "guilib/GUITexture.h"
#include "settings/AdvancedSettings.h"
*/
#include "system.h"
-#include "GUIWindowTestPatternGL.h"
#ifdef HAS_GL
+#include "system_gl.h"
+#include "GUIWindowTestPatternGL.h"
CGUIWindowTestPatternGL::CGUIWindowTestPatternGL(void) : CGUIWindowTestPattern()
{
*
*/
-#include "RenderSystemGL.h"
+
+#include "system.h"
#ifdef HAS_GL
+#include "RenderSystemGL.h"
#include "guilib/GraphicContext.h"
#include "settings/AdvancedSettings.h"
#include "utils/log.h"
#pragma once
#include "system.h"
+#include "system_gl.h"
#include "rendering/RenderSystem.h"
class CRenderSystemGL : public CRenderSystemBase
int m_glslMajor;
int m_glslMinor;
-#ifdef HAS_GL
GLdouble m_view[16];
GLdouble m_projection[16];
GLint m_viewPort[4];
-#endif
};
#endif // RENDER_SYSTEM_H
#pragma once
+#include "system.h"
+#include "system_gl.h"
#include "rendering/RenderSystem.h"
#include "xbmc/guilib/GUIShader.h"
#define HAS_GLES 1
#endif
-
-#ifdef HAS_GL
-#if defined(TARGET_WINDOWS)
-#include "GL/glew.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-//#include <GL/wglext.h>
-#elif defined(TARGET_DARWIN)
-#include <GL/glew.h>
-#include <OpenGL/gl.h>
-#elif defined(TARGET_LINUX)
-#include <GL/glew.h>
-#include <GL/gl.h>
-#endif
-#endif
-
-#if HAS_GLES == 2
- #if defined(TARGET_DARWIN)
- #include <OpenGLES/ES2/gl.h>
- #include <OpenGLES/ES2/glext.h>
- #else
- #include <GLES2/gl2.h>
- #include <GLES2/gl2ext.h>
- #endif
-#endif
-
#ifdef HAS_DVD_DRIVE
#define HAS_CDDA_RIPPER
#endif
--- /dev/null
+#pragma once
+
+/*
+ * Copyright (C) 2005-2012 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "system.h"
+
+#ifdef HAS_GL
+ // always define GL_GLEXT_PROTOTYPES before include gl headers
+ #if !defined(GL_GLEXT_PROTOTYPES)
+ #define GL_GLEXT_PROTOTYPES
+ #endif
+ #if defined(TARGET_WINDOWS)
+ #include <GL/glew.h>
+ #include <GL/gl.h>
+ #include <GL/glu.h>
+ #elif defined(TARGET_LINUX)
+ #include <GL/glew.h>
+ #include <GL/gl.h>
+ #include <GL/glext.h>
+ #elif defined(TARGET_DARWIN)
+ #include <GL/glew.h>
+ #include <OpenGL/gl.h>
+ #include <OpenGL/glext.h>
+ #endif
+#elif HAS_GLES == 2
+ #if defined(TARGET_DARWIN)
+ #include <OpenGLES/ES2/gl.h>
+ #include <OpenGLES/ES2/glext.h>
+ #else
+ #include <GLES2/gl2.h>
+ #include <GLES2/gl2ext.h>
+ #endif
+#endif
*
*/
-#include "log.h"
#include "system.h"
+
+#include "GLUtils.h"
+#include "log.h"
#include "settings/AdvancedSettings.h"
#include "windowing/WindowingFactory.h"
// if not it's just an empty inline stub, and thus won't affect performance
// and will be optimized out.
+#include "system.h"
+#include "system_gl.h"
+
void _VerifyGLState(const char* szfile, const char* szfunction, int lineno);
#if defined(GL_DEBUGGING) && (defined(HAS_GL) || defined(HAS_GLES))
#define VerifyGLState() _VerifyGLState(__FILE__, __FUNCTION__, __LINE__)
//TODO: get rid of #ifdef hell, abstract implementations in separate classes
#if defined(HAS_GLX) && defined(HAS_XRANDR)
+ #include "system_gl.h"
#include <X11/X.h>
#include <X11/Xlib.h>
#include <GL/glx.h>
* http://www.gnu.org/copyleft/gpl.html
*
*/
+
+#include "system_gl.h"
+#include <GL/glx.h>
+
#include "windowing/WinSystem.h"
#include "utils/Stopwatch.h"
-#include <GL/glx.h>
#include "threads/CriticalSection.h"
class IDispResource;