1/*****************************************************************************\
2 * Tseng Labs ET6000, ET6100 and ET6300 graphics driver for BeOS 5.
3 * Copyright (c) 2003-2004, Evgeniy Vladimirovich Bobkov.
4\*****************************************************************************/
5
6#include "generic.h"
7
8
9/*****************************************************************************/
10/*
11 * The standard entry point.  Given a uint32 feature identifier, this routine
12 * returns a pointer to the function that implements the feature. Some features
13 * require more information than just the identifier to select the proper
14 * function. The extra information (which is specific to the feature) is
15 * pointed at by the void *data parameter. By default, no extra information
16 * is available. Any extra information available to choose the function will
17 * be noted on a case by case below.
18 */
19void *get_accelerant_hook(uint32 feature, void *data) {
20/* These definition is out of pure lazyness.*/
21#define HOOK(x) case B_##x: return (void *)x
22
23    switch (feature) {
24
25	/*
26	 * One of either B_INIT_ACCELERANT or B_CLONE_ACCELERANT will be
27         * requested and subsequently called before any other hook is
28         * requested. All other feature hook selections can be predicated
29         * on variables assigned during the accelerant initialization process.
30	 */
31	/* initialization */
32	HOOK(INIT_ACCELERANT);
33	HOOK(CLONE_ACCELERANT);
34
35	HOOK(ACCELERANT_CLONE_INFO_SIZE);
36	HOOK(GET_ACCELERANT_CLONE_INFO);
37	HOOK(UNINIT_ACCELERANT);
38	HOOK(GET_ACCELERANT_DEVICE_INFO);
39
40///     HOOK(ACCELERANT_RETRACE_SEMAPHORE); /* Not implemented. Would be useful to have it implemented. */
41
42	/* mode configuration */
43	HOOK(ACCELERANT_MODE_COUNT);
44	HOOK(GET_MODE_LIST);
45///	HOOK(PROPOSE_DISPLAY_MODE);
46	HOOK(SET_DISPLAY_MODE);
47	HOOK(GET_DISPLAY_MODE);
48	HOOK(GET_FRAME_BUFFER_CONFIG);
49	HOOK(GET_PIXEL_CLOCK_LIMITS);
50
51	/* synchronization */
52	HOOK(ACCELERANT_ENGINE_COUNT);
53	HOOK(ACQUIRE_ENGINE);
54	HOOK(RELEASE_ENGINE);
55	HOOK(WAIT_ENGINE_IDLE);
56	HOOK(GET_SYNC_TOKEN);
57	HOOK(SYNC_TO_TOKEN);
58
59	/* 2D acceleration */
60	HOOK(SCREEN_TO_SCREEN_BLIT);
61	HOOK(FILL_RECTANGLE);
62    }
63
64    /* Return a null pointer for any feature we don't understand. */
65    return 0;
66
67#undef HOOK
68}
69/*****************************************************************************/
70