1/* 2 * Copyright 2005, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Michael Lotz <mmlr@mlotz.ch> 7 * Stephan A��mus <superstippi@gmx.de> 8 */ 9#ifndef ACCELERANT_HW_INTERFACE_H 10#define ACCELERANT_HW_INTERFACE_H 11 12 13#include <image.h> 14 15#include <Accelerant.h> 16#include <Locker.h> 17#include <Region.h> 18#include <String.h> 19 20//class MallocBuffer; 21//class AccelerantBuffer; 22 23 24class AccelerantHWInterface : public BLocker/* : public HWInterface*/ { 25public: 26 AccelerantHWInterface(); 27 virtual ~AccelerantHWInterface(); 28 29 virtual status_t Initialize(); 30 virtual status_t Shutdown(); 31 32/* virtual status_t SetMode(const display_mode &mode); 33 virtual void GetMode(display_mode *mode); 34 35 virtual status_t GetDeviceInfo(accelerant_device_info *info); 36 virtual status_t GetFrameBufferConfig(frame_buffer_config& config); 37 38 virtual status_t GetModeList(display_mode **mode_list, 39 uint32 *count); 40 virtual status_t GetPixelClockLimits(display_mode *mode, 41 uint32 *low, uint32 *high); 42 virtual status_t GetTimingConstraints(display_timing_constraints *dtc); 43 virtual status_t ProposeMode(display_mode *candidate, 44 const display_mode *low, 45 const display_mode *high); 46 47 virtual sem_id RetraceSemaphore(); 48 virtual status_t WaitForRetrace(bigtime_t timeout = B_INFINITE_TIMEOUT); 49 50 virtual status_t SetDPMSMode(const uint32 &state); 51 virtual uint32 DPMSMode(); 52 virtual uint32 DPMSCapabilities();*/ 53 54 // query for available hardware accleration and perform it 55 virtual uint32 AvailableHWAcceleration() const; 56 57 virtual void CopyRegion(const clipping_rect* sortedRectList, 58 uint32 count, 59 int32 xOffset, int32 yOffset); 60 virtual void FillRegion(/*const*/ BRegion& region, 61 const rgb_color& color); 62 virtual void InvertRegion(/*const*/ BRegion& region); 63 64 // cursor handling 65/*virtual void SetCursor(ServerCursor* cursor); 66virtual void SetCursorVisible(bool visible); 67virtual void MoveCursorTo(const float& x, 68 const float& y);*/ 69 70 // frame buffer access 71//virtual RenderingBuffer* FrontBuffer() const; 72//virtual RenderingBuffer* BackBuffer() const; 73//virtual bool IsDoubleBuffered() const; 74 75protected: 76//virtual void _DrawCursor(BRect area) const; 77 78private: 79 int _OpenGraphicsDevice(int deviceNumber); 80 status_t _OpenAccelerant(int device); 81 status_t _SetupDefaultHooks(); 82 status_t _UpdateModeList(); 83 status_t _UpdateFrameBufferConfig(); 84 void _RegionToRectParams(/*const*/ BRegion* region, 85 fill_rect_params** params, 86 uint32* count) const; 87 uint32 _NativeColor(const rgb_color& color) const; 88 89 int fCardFD; 90 image_id fAccelerantImage; 91 GetAccelerantHook fAccelerantHook; 92 engine_token *fEngineToken; 93 sync_token fSyncToken; 94 95 // required hooks - guaranteed to be valid 96 acquire_engine fAccAcquireEngine; 97 release_engine fAccReleaseEngine; 98 sync_to_token fAccSyncToToken; 99 accelerant_mode_count fAccGetModeCount; 100 get_mode_list fAccGetModeList; 101 get_frame_buffer_config fAccGetFrameBufferConfig; 102 set_display_mode fAccSetDisplayMode; 103 get_display_mode fAccGetDisplayMode; 104 get_pixel_clock_limits fAccGetPixelClockLimits; 105 106 // optional accelerant hooks 107 get_timing_constraints fAccGetTimingConstraints; 108 propose_display_mode fAccProposeDisplayMode; 109 fill_rectangle fAccFillRect; 110 invert_rectangle fAccInvertRect; 111 screen_to_screen_blit fAccScreenBlit; 112 set_cursor_shape fAccSetCursorShape; 113 move_cursor fAccMoveCursor; 114 show_cursor fAccShowCursor; 115 116 BString fCardNameInDevFS; 117 // dpms hooks 118/* dpms_capabilities fAccDPMSCapabilities; 119 dpms_mode fAccDPMSMode; 120 set_dpms_mode fAccSetDPMSMode; 121 122 frame_buffer_config fFrameBufferConfig; 123 int fModeCount; 124 display_mode *fModeList;*/ 125 126 127// MallocBuffer *fBackBuffer; 128// AccelerantBuffer *fFrontBuffer; 129 130 131// display_mode fDisplayMode; 132}; 133 134#endif // ACCELERANT_HW_INTERFACE_H 135