1/* 2 * Copyright 1999, Be Incorporated. 3 * Copyright 2007, Haiku. 4 * Distributed under the terms of the MIT License. 5 * 6 * Authors: 7 * Be Incorporated 8 * Eric Petit <eric.petit@lapsus.org> 9 * Michael Pfeiffer <laplace@users.sourceforge.net> 10 */ 11 12#include "GlobalData.h" 13 14 15void * 16get_accelerant_hook(uint32 feature, void *data) 17{ 18 switch (feature) { 19#define HOOK(x) case B_##x: return (void *)x 20#define ZERO(x) case B_##x: return (void *)0 21#define HOOK_IF(x, cap) case B_##x: if (gSi->capabilities & cap) return (void *)x; else return (void *)0 22 23 /* initialization */ 24 HOOK(INIT_ACCELERANT); 25 HOOK(CLONE_ACCELERANT); 26 27 HOOK(ACCELERANT_CLONE_INFO_SIZE); 28 HOOK(GET_ACCELERANT_CLONE_INFO); 29 HOOK(UNINIT_ACCELERANT); 30 //HOOK(GET_ACCELERANT_DEVICE_INFO); 31 HOOK(ACCELERANT_RETRACE_SEMAPHORE); 32 33 /* mode configuration */ 34 HOOK(ACCELERANT_MODE_COUNT); 35 HOOK(GET_MODE_LIST); 36 HOOK(PROPOSE_DISPLAY_MODE); 37 HOOK(SET_DISPLAY_MODE); 38 HOOK(GET_DISPLAY_MODE); 39 HOOK(GET_FRAME_BUFFER_CONFIG); 40 HOOK(GET_PIXEL_CLOCK_LIMITS); 41 ZERO(MOVE_DISPLAY); 42 HOOK(SET_INDEXED_COLORS); 43 ZERO(GET_TIMING_CONSTRAINTS); 44 45 /* Power Managment (SetDisplayMode.c) */ 46 HOOK(DPMS_CAPABILITIES); 47 HOOK(DPMS_MODE); 48 HOOK(SET_DPMS_MODE); 49 50 /* Cursor managment (Cursor.c) */ 51 HOOK_IF(SET_CURSOR_SHAPE, SVGA_CAP_CURSOR_BYPASS); 52 HOOK_IF(MOVE_CURSOR, SVGA_CAP_CURSOR_BYPASS); 53 HOOK_IF(SHOW_CURSOR, SVGA_CAP_CURSOR_BYPASS); 54 55 /* synchronization */ 56 HOOK(ACCELERANT_ENGINE_COUNT); 57 HOOK(ACQUIRE_ENGINE); 58 HOOK(RELEASE_ENGINE); 59 HOOK(WAIT_ENGINE_IDLE); 60 HOOK(GET_SYNC_TOKEN); 61 HOOK(SYNC_TO_TOKEN); 62 63 /* 2D acceleration (Acceleration.c) */ 64 HOOK_IF(SCREEN_TO_SCREEN_BLIT, SVGA_CAP_RECT_COPY); 65 ZERO(FILL_RECTANGLE); 66 ZERO(INVERT_RECTANGLE); 67 ZERO(FILL_SPAN); 68 ZERO(SCREEN_TO_SCREEN_TRANSPARENT_BLIT); 69 ZERO(SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT); 70 71#undef HOOK 72#undef ZERO 73 } 74 75 return 0; 76} 77