• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, public HGLWinsysContext {
22 public:
23 								SoftwareRenderer(BGLView *view,
24 									ulong bgl_options);
25 	virtual						~SoftwareRenderer();
26 
27 			void				LockGL();
28 			void				UnlockGL();
29 
30 			void				Display(BBitmap* bitmap, BRect* updateRect);
31 
32 			void				SwapBuffers(bool vsync = false);
33 			void				Draw(BRect updateRect);
34 			status_t			CopyPixelsOut(BPoint source, BBitmap *dest);
35 			status_t			CopyPixelsIn(BBitmap *source, BPoint dest);
36 			void				FrameResized(float width, float height);
37 
38 			void				EnableDirectMode(bool enabled);
39 			void				DirectConnected(direct_buffer_info *info);
40 
41 private:
42 			GalliumContext*		fContextObj;
43 			context_id			fContextID;
44 
45 			bool				fDirectModeEnabled;
46 			direct_buffer_info*	fInfo;
47 			BLocker				fInfoLocker;
48 			ulong				fOptions;
49 			GLuint				fWidth;
50 			GLuint				fHeight;
51 			color_space			fColorSpace;
52 };
53 
54 #endif	// SOFTPIPERENDERER_H
55