1/*
2 * Copyright 2008-2012 Haiku, Inc.  All rights reserved.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Gerald Zajac
7 */
8
9
10#include "accelerant.h"
11
12
13extern "C" void*
14get_accelerant_hook(uint32 feature, void* data)
15{
16	(void)data;
17		// avoid compiler warning for unused arg
18
19	switch (feature) {
20		// General
21		case B_INIT_ACCELERANT:
22			return (void*)InitAccelerant;
23		case B_UNINIT_ACCELERANT:
24			return (void*)UninitAccelerant;
25		case B_CLONE_ACCELERANT:
26			return (void*)CloneAccelerant;
27		case B_ACCELERANT_CLONE_INFO_SIZE:
28			return (void*)AccelerantCloneInfoSize;
29		case B_GET_ACCELERANT_CLONE_INFO:
30			return (void*)GetAccelerantCloneInfo;
31		case B_GET_ACCELERANT_DEVICE_INFO:
32			return (void*)GetAccelerantDeviceInfo;
33		case B_ACCELERANT_RETRACE_SEMAPHORE:
34			return NULL;
35
36		// Mode Configuration
37		case B_ACCELERANT_MODE_COUNT:
38			return (void*)AccelerantModeCount;
39		case B_GET_MODE_LIST:
40			return (void*)GetModeList;
41		case B_PROPOSE_DISPLAY_MODE:
42			return (void*)ProposeDisplayMode;
43		case B_SET_DISPLAY_MODE:
44			return (void*)SetDisplayMode;
45		case B_GET_DISPLAY_MODE:
46			return (void*)GetDisplayMode;
47#ifdef __HAIKU__
48		case B_GET_EDID_INFO:
49			return (void*)GetEdidInfo;
50#endif
51		case B_GET_FRAME_BUFFER_CONFIG:
52			return (void*)GetFrameBufferConfig;
53		case B_GET_PIXEL_CLOCK_LIMITS:
54			return (void*)GetPixelClockLimits;
55		case B_MOVE_DISPLAY:
56			return (void*)MoveDisplay;
57		case B_SET_INDEXED_COLORS:
58			return (void*)(I810_SetIndexedColors);
59		case B_GET_TIMING_CONSTRAINTS:
60			return NULL;
61
62		// DPMS
63		case B_DPMS_CAPABILITIES:
64			return (void*)(I810_DPMSCapabilities);
65		case B_DPMS_MODE:
66			return (void*)(I810_GetDPMSMode);
67		case B_SET_DPMS_MODE:
68			return (void*)(I810_SetDPMSMode);
69
70		// Engine Management
71		case B_ACCELERANT_ENGINE_COUNT:
72			return (void*)AccelerantEngineCount;
73		case B_ACQUIRE_ENGINE:
74			return (void*)AcquireEngine;
75		case B_RELEASE_ENGINE:
76			return (void*)ReleaseEngine;
77		case B_WAIT_ENGINE_IDLE:
78			return (void*)WaitEngineIdle;
79		case B_GET_SYNC_TOKEN:
80			return (void*)GetSyncToken;
81		case B_SYNC_TO_TOKEN:
82			return (void*)SyncToToken;
83	}
84
85	return NULL;	// Return null pointer for any feature not handled above
86}
87