xref: /haiku/src/add-ons/accelerants/ati/hooks.cpp (revision 71452e98334eaac603bf542d159e24788a46bebb)
1 /*
2 	Copyright 2008, 2011 Haiku, Inc.  All rights reserved.
3 	Distributed under the terms of the MIT license.
4 
5 	Authors:
6 	Gerald Zajac
7 */
8 
9 #include "accelerant.h"
10 
11 
12 extern "C" void*
13 get_accelerant_hook(uint32 feature, void* data)
14 {
15 	(void)data;		// avoid compiler warning for unused arg
16 
17 	switch (feature) {
18 		// General
19 		case B_INIT_ACCELERANT:
20 			return (void*)InitAccelerant;
21 		case B_UNINIT_ACCELERANT:
22 			return (void*)UninitAccelerant;
23 		case B_CLONE_ACCELERANT:
24 			return (void*)CloneAccelerant;
25 		case B_ACCELERANT_CLONE_INFO_SIZE:
26 			return (void*)AccelerantCloneInfoSize;
27 		case B_GET_ACCELERANT_CLONE_INFO:
28 			return (void*)GetAccelerantCloneInfo;
29 		case B_GET_ACCELERANT_DEVICE_INFO:
30 			return (void*)GetAccelerantDeviceInfo;
31 		case B_ACCELERANT_RETRACE_SEMAPHORE:
32 			return (void*)AccelerantRetraceSemaphore;
33 
34 		// Mode Configuration
35 		case B_ACCELERANT_MODE_COUNT:
36 			return (void*)AccelerantModeCount;
37 		case B_GET_MODE_LIST:
38 			return (void*)GetModeList;
39 		case B_PROPOSE_DISPLAY_MODE:
40 			return (void*)ProposeDisplayMode;
41 		case B_SET_DISPLAY_MODE:
42 			return (void*)SetDisplayMode;
43 		case B_GET_DISPLAY_MODE:
44 			return (void*)GetDisplayMode;
45 		case B_GET_PREFERRED_DISPLAY_MODE:
46 			return (void*)GetPreferredDisplayMode;
47 		case B_GET_EDID_INFO:
48 			return (void*)GetEdidInfo;
49 		case B_GET_FRAME_BUFFER_CONFIG:
50 			return (void*)GetFrameBufferConfig;
51 		case B_GET_PIXEL_CLOCK_LIMITS:
52 			return (void*)GetPixelClockLimits;
53 		case B_MOVE_DISPLAY:
54 			return (void*)MoveDisplay;
55 		case B_SET_INDEXED_COLORS:
56 			return (void*)(gInfo.SetIndexedColors);
57 		case B_GET_TIMING_CONSTRAINTS:
58 			return (void*)GetTimingConstraints;
59 
60 		// DPMS
61 		case B_DPMS_CAPABILITIES:
62 			return (void*)(gInfo.DPMSCapabilities);
63 		case B_DPMS_MODE:
64 			return (void*)(gInfo.GetDPMSMode);
65 		case B_SET_DPMS_MODE:
66 			return (void*)(gInfo.SetDPMSMode);
67 
68 		// Cursor
69 		case B_SET_CURSOR_SHAPE:
70 			return (void*)SetCursorShape;
71 		case B_MOVE_CURSOR:
72 			return (void*)MoveCursor;
73 		case B_SHOW_CURSOR:
74 			return (void*)(gInfo.ShowCursor);
75 
76 		// Engine Management
77 		case B_ACCELERANT_ENGINE_COUNT:
78 			return (void*)AccelerantEngineCount;
79 		case B_ACQUIRE_ENGINE:
80 			return (void*)AcquireEngine;
81 		case B_RELEASE_ENGINE:
82 			return (void*)ReleaseEngine;
83 		case B_WAIT_ENGINE_IDLE:
84 			return (void*)WaitEngineIdle;
85 		case B_GET_SYNC_TOKEN:
86 			return (void*)GetSyncToken;
87 		case B_SYNC_TO_TOKEN:
88 			return (void*)SyncToToken;
89 
90 		// 2D acceleration
91 		case B_SCREEN_TO_SCREEN_BLIT:
92 			return (void*)(gInfo.ScreenToScreenBlit);
93 		case B_FILL_RECTANGLE:
94 			return (void*)(gInfo.FillRectangle);
95 		case B_INVERT_RECTANGLE:
96 			return (void*)(gInfo.InvertRectangle);
97 		case B_FILL_SPAN:
98 			return (void*)(gInfo.FillSpan);
99 
100 		// Overlay
101 		case B_OVERLAY_COUNT:
102 			return (void*)OverlayCount;
103 		case B_OVERLAY_SUPPORTED_SPACES:
104 			return (void*)OverlaySupportedSpaces;
105 		case B_OVERLAY_SUPPORTED_FEATURES:
106 			return (void*)OverlaySupportedFeatures;
107 		case B_ALLOCATE_OVERLAY_BUFFER:
108 			return (void*)AllocateOverlayBuffer;
109 		case B_RELEASE_OVERLAY_BUFFER:
110 			return (void*)ReleaseOverlayBuffer;
111 		case B_GET_OVERLAY_CONSTRAINTS:
112 			return (void*)GetOverlayConstraints;
113 		case B_ALLOCATE_OVERLAY:
114 			return (void*)AllocateOverlay;
115 		case B_RELEASE_OVERLAY:
116 			return (void*)ReleaseOverlay;
117 		case B_CONFIGURE_OVERLAY:
118 			return (void*)ConfigureOverlay;
119 	}
120 
121 	return NULL;	// Return null pointer for any feature not handled above
122 }
123