mesa: Reduce libGL.so binary size by about 15%
[mesa.git] / src / gallium / targets / haiku-softpipe / SoftwareRenderer.h
1 /*
2 * Copyright 2006-2012, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 * Jérôme Duval, korli@users.berlios.de
7 * Philippe Houdoin, philippe.houdoin@free.fr
8 * Artur Wyszynski, harakash@gmail.com
9 * Alexander von Gluck IV, kallisti5@unixzen.com
10 */
11 #ifndef SOFTWARERENDERER_H
12 #define SOFTWARERENDERER_H
13
14
15 #include <kernel/image.h>
16
17 #include "GLRenderer.h"
18 #include "GalliumContext.h"
19
20
21 class SoftwareRenderer : public BGLRenderer {
22 public:
23 SoftwareRenderer(BGLView *view,
24 ulong bgl_options,
25 BGLDispatcher *dispatcher);
26 virtual ~SoftwareRenderer();
27
28 virtual void LockGL();
29 virtual void UnlockGL();
30
31 virtual void SwapBuffers(bool vsync = false);
32 virtual void Draw(BRect updateRect);
33 virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest);
34 virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest);
35 virtual void FrameResized(float width, float height);
36
37 virtual void EnableDirectMode(bool enabled);
38 virtual void DirectConnected(direct_buffer_info *info);
39
40 private:
41
42 void _AllocateBitmap();
43
44 GalliumContext* fContextObj;
45 BBitmap* fBitmap;
46 context_id fContextID;
47
48 bool fDirectModeEnabled;
49 direct_buffer_info* fInfo;
50 BLocker fInfoLocker;
51 ulong fOptions;
52 GLuint fWidth;
53 GLuint fHeight;
54 color_space fColorSpace;
55 };
56
57 #endif // SOFTPIPERENDERER_H