Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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.