| /* |
| * Copyright 2006-2012, Haiku, Inc. All rights reserved. |
| * Distributed under the terms of the MIT License. |
| * |
| * Authors: |
| * Jérôme Duval, korli@users.berlios.de |
| * Philippe Houdoin, philippe.houdoin@free.fr |
| * Artur Wyszynski, harakash@gmail.com |
| * Alexander von Gluck IV, kallisti5@unixzen.com |
| */ |
| #ifndef SOFTWARERENDERER_H |
| #define SOFTWARERENDERER_H |
| |
| |
| #include <kernel/image.h> |
| |
| #include "GLRenderer.h" |
| #include "GalliumContext.h" |
| |
| |
| class SoftwareRenderer : public BGLRenderer { |
| public: |
| SoftwareRenderer(BGLView *view, |
| ulong bgl_options, |
| BGLDispatcher *dispatcher); |
| virtual ~SoftwareRenderer(); |
| |
| 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 EnableDirectMode(bool enabled); |
| virtual void DirectConnected(direct_buffer_info *info); |
| |
| private: |
| |
| void _AllocateBitmap(); |
| |
| GalliumContext* fContextObj; |
| BBitmap* fBitmap; |
| context_id fContextID; |
| |
| bool fDirectModeEnabled; |
| direct_buffer_info* fInfo; |
| BLocker fInfoLocker; |
| ulong fOptions; |
| GLuint fWidth; |
| GLuint fHeight; |
| color_space fColorSpace; |
| }; |
| |
| #endif // SOFTPIPERENDERER_H |