1/*
2 * Copyright 2006-2007, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Axel D��rfler, axeld@pinc-software.de
7 */
8#ifndef ACCELERANT_PROTOS_H
9#define ACCELERANT_PROTOS_H
10
11
12#include <Accelerant.h>
13#include "video_overlay.h"
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20void spin(bigtime_t delay);
21
22// general
23status_t intel_init_accelerant(int fd);
24ssize_t intel_accelerant_clone_info_size(void);
25void intel_get_accelerant_clone_info(void* data);
26status_t intel_clone_accelerant(void* data);
27void intel_uninit_accelerant(void);
28status_t intel_get_accelerant_device_info(accelerant_device_info* info);
29sem_id intel_accelerant_retrace_semaphore(void);
30
31// modes & constraints
32uint32 intel_accelerant_mode_count(void);
33status_t intel_get_mode_list(display_mode* dm);
34status_t intel_propose_display_mode(display_mode* target,
35	const display_mode* low, const display_mode* high);
36status_t intel_get_preferred_mode(display_mode* preferredMode);
37status_t intel_set_display_mode(display_mode* mode);
38status_t intel_get_display_mode(display_mode* currentMode);
39status_t intel_get_edid_info(void* info, size_t size, uint32* _version);
40status_t intel_set_brightness(float brightness);
41status_t intel_get_brightness(float* brightness);
42status_t intel_get_frame_buffer_config(frame_buffer_config* config);
43status_t intel_get_pixel_clock_limits(display_mode* mode, uint32* low,
44	uint32* high);
45status_t intel_move_display(uint16 hDisplayStart, uint16 vDisplayStart);
46status_t intel_get_timing_constraints(display_timing_constraints* constraints);
47void intel_set_indexed_colors(uint count, uint8 first, uint8* colorData,
48	uint32 flags);
49
50// DPMS
51uint32 intel_dpms_capabilities(void);
52uint32 intel_dpms_mode(void);
53status_t intel_set_dpms_mode(uint32 flags);
54
55// cursor
56status_t intel_set_cursor_shape(uint16 width, uint16 height, uint16 hotX,
57	uint16 hotY, uint8* andMask, uint8* xorMask);
58void intel_move_cursor(uint16 x, uint16 y);
59void intel_show_cursor(bool isVisible);
60
61// accelerant engine
62uint32 intel_accelerant_engine_count(void);
63status_t intel_acquire_engine(uint32 capabilities, uint32 maxWait,
64			sync_token* syncToken, engine_token** _engineToken);
65status_t intel_release_engine(engine_token* engineToken, sync_token* syncToken);
66void intel_wait_engine_idle(void);
67status_t intel_get_sync_token(engine_token* engineToken, sync_token* syncToken);
68status_t intel_sync_to_token(sync_token* syncToken);
69
70// 2D acceleration
71void intel_screen_to_screen_blit(engine_token* engineToken,
72	blit_params* list, uint32 count);
73void intel_fill_rectangle(engine_token* engineToken, uint32 color,
74	fill_rect_params* list, uint32 count);
75void intel_invert_rectangle(engine_token* engineToken, fill_rect_params* list,
76	uint32 count);
77void intel_fill_span(engine_token* engineToken, uint32 color, uint16* list,
78	uint32 count);
79
80// overlay
81uint32 intel_overlay_count(const display_mode* mode);
82const uint32* intel_overlay_supported_spaces(const display_mode* mode);
83uint32 intel_overlay_supported_features(uint32 colorSpace);
84const overlay_buffer* intel_allocate_overlay_buffer(color_space space,
85	uint16 width, uint16 height);
86status_t intel_release_overlay_buffer(const overlay_buffer* buffer);
87status_t intel_get_overlay_constraints(const display_mode* mode,
88	const overlay_buffer* buffer, overlay_constraints* constraints);
89overlay_token intel_allocate_overlay(void);
90status_t intel_release_overlay(overlay_token overlayToken);
91status_t intel_configure_overlay(overlay_token overlayToken,
92	const overlay_buffer* buffer, const overlay_window* window,
93	const overlay_view* view);
94status_t i965_configure_overlay(overlay_token overlayToken,
95	const overlay_buffer* buffer, const overlay_window* window,
96	const overlay_view* view);
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif	/* ACCELERANT_PROTOS_H */
103