aboutsummaryrefslogtreecommitdiff
path: root/mesalib/include/HaikuGL/GLRenderer.h
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-12-22 13:12:15 +0100
committermarha <marha@users.sourceforge.net>2013-12-22 13:16:58 +0100
commit1d03b6f684ab1ea6772f00058605a9ebb2910628 (patch)
tree8b393bd59900eba6aa9010cab9e714922cac2536 /mesalib/include/HaikuGL/GLRenderer.h
parent5567cf1befbda64f2dc6fae1d337567cd984b46e (diff)
parentc81020559f329a516191927222b3698ba7370aca (diff)
downloadvcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.tar.gz
vcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.tar.bz2
vcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.zip
Merge remote-tracking branch 'origin/released'
* origin/released: libxtrans fontconfig glproto libX11 libxcb xcbproto mesa xserver pixman xkeyboard-config git update 22 Dec 2013 Conflicts: mesalib/include/GL/glext.h mesalib/src/mesa/drivers/dri/common/dri_util.c mesalib/src/mesa/drivers/dri/swrast/swrast.c xorg-server/damageext/damageext.c xorg-server/dix/dispatch.c xorg-server/glx/glxdriswrast.c xorg-server/glx/indirect_dispatch.c xorg-server/glx/indirect_dispatch_swap.c xorg-server/glx/indirect_program.c xorg-server/glx/render2.c xorg-server/glx/render2swap.c xorg-server/hw/xwin/glx/gen_gl_wrappers.py xorg-server/hw/xwin/glx/glthunk.c xorg-server/hw/xwin/glx/indirect.c xorg-server/include/os.h xorg-server/present/present_request.c
Diffstat (limited to 'mesalib/include/HaikuGL/GLRenderer.h')
-rw-r--r--mesalib/include/HaikuGL/GLRenderer.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/mesalib/include/HaikuGL/GLRenderer.h b/mesalib/include/HaikuGL/GLRenderer.h
new file mode 100644
index 000000000..7ffcc34bb
--- /dev/null
+++ b/mesalib/include/HaikuGL/GLRenderer.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2006, Philippe Houdoin. All rights reserved.
+ * Distributed under the terms of the MIT License.
+
+ * This header defines BGLRenderer, the base class making up
+ * the Haiku GL renderer add-ons (essentially selfcontained C++
+ * shared libraries that do the actual rendering such as
+ * libswpipe.so and libswrast.so)
+ */
+#ifndef GLRENDERER_H
+#define GLRENDERER_H
+
+
+#include <BeBuild.h>
+#include <GLView.h>
+
+
+class BGLDispatcher;
+class GLRendererRoster;
+
+typedef unsigned long renderer_id;
+
+class BGLRenderer
+{
+ // Private unimplemented copy constructors
+ BGLRenderer(const BGLRenderer &);
+ BGLRenderer & operator=(const BGLRenderer &);
+
+public:
+ BGLRenderer(BGLView *view, ulong bgl_options,
+ BGLDispatcher *dispatcher);
+ virtual ~BGLRenderer();
+
+ void Acquire();
+ void Release();
+
+ virtual void LockGL();
+ virtual void UnlockGL();
+
+ virtual void SwapBuffers(bool VSync = false);
+ virtual void Draw(BRect updateRect);
+ virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest);
+ virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest);
+
+ virtual void FrameResized(float width, float height);
+
+ virtual void DirectConnected(direct_buffer_info *info);
+ virtual void EnableDirectMode(bool enabled);
+
+ inline int32 ReferenceCount() const { return fRefCount; };
+ inline ulong Options() const { return fOptions; };
+ inline BGLView* GLView() { return fView; };
+ inline BGLDispatcher* GLDispatcher() { return fDispatcher; };
+
+private:
+ friend class GLRendererRoster;
+
+ virtual status_t _Reserved_Renderer_0(int32, void *);
+ virtual status_t _Reserved_Renderer_1(int32, void *);
+ virtual status_t _Reserved_Renderer_2(int32, void *);
+ virtual status_t _Reserved_Renderer_3(int32, void *);
+ virtual status_t _Reserved_Renderer_4(int32, void *);
+
+ volatile int32 fRefCount; // How much we're still usefull?
+ BGLView* fView; // Never forget who is the boss!
+ ulong fOptions; // Keep that tune in memory
+ BGLDispatcher* fDispatcher;// Our personal GL API call dispatcher
+
+ GLRendererRoster* fOwningRoster;
+ renderer_id fID;
+};
+
+extern "C" _EXPORT BGLRenderer* instantiate_gl_renderer(BGLView *view, ulong options, BGLDispatcher *dispatcher);
+
+
+#endif // GLRENDERER_H