summaryrefslogtreecommitdiff
path: root/indra/llwindow/llwindowmesaheadless.cpp
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llwindow/llwindowmesaheadless.cpp
Print done when done.
Diffstat (limited to 'indra/llwindow/llwindowmesaheadless.cpp')
-rw-r--r--indra/llwindow/llwindowmesaheadless.cpp64
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