diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llwindow/llwindowmesaheadless.cpp |
Print done when done.
Diffstat (limited to 'indra/llwindow/llwindowmesaheadless.cpp')
-rw-r--r-- | indra/llwindow/llwindowmesaheadless.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp new file mode 100644 index 0000000000..c924bb1efa --- /dev/null +++ b/indra/llwindow/llwindowmesaheadless.cpp @@ -0,0 +1,64 @@ +/** + * @file llwindowmesaheadless.cpp + * @brief Platform-dependent implementation of llwindow + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#if LL_MESA_HEADLESS + +#include "linden_common.h" +#include "indra_constants.h" + +#include "llwindowmesaheadless.h" +#include "llgl.h" +#include "llglheaders.h" + +#define MESA_CHANNEL_TYPE GL_UNSIGNED_SHORT +#define MESA_CHANNEL_SIZE 2 + +U16 *gMesaBuffer = NULL; + +// +// LLWindowMesaHeadless +// +LLWindowMesaHeadless::LLWindowMesaHeadless(char *title, char *name, S32 x, S32 y, S32 width, S32 height, + U32 flags, BOOL fullscreen, BOOL clearBg, + BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) + : LLWindow(fullscreen, flags) +{ + if (use_gl) + { + llinfos << "MESA Init" << llendl; + mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL ); + + /* Allocate the image buffer */ + mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE]; + llassert(mMesaBuffer); + + gMesaBuffer = (U16*)mMesaBuffer; + + /* Bind the buffer to the context and make it current */ + if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height )) + { + llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl; + } + + llverify(gGLManager.initGL()); + } +} + + +LLWindowMesaHeadless::~LLWindowMesaHeadless() +{ + delete mMesaBuffer; + OSMesaDestroyContext( mMesaContext ); +} + +void LLWindowMesaHeadless::swapBuffers() +{ + glFinish(); +} + +#endif |