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 58