xref: /haiku/headers/os/add-ons/graphics/GraphicsCard.h (revision f6e4cbb95290a74b33d012600438b84742b0e572)
1d734a8ceSbeveloper /******************************************************************************
2d734a8ceSbeveloper /
3d734a8ceSbeveloper /	File:			GraphicsCard.h
4d734a8ceSbeveloper /
5d734a8ceSbeveloper /	Description:	App Server interface for graphics card add-ons.
6d734a8ceSbeveloper /
7d734a8ceSbeveloper /	Copyright 1993-98, Be Incorporated
8d734a8ceSbeveloper /
9d734a8ceSbeveloper *******************************************************************************/
10d734a8ceSbeveloper 
11d734a8ceSbeveloper #ifndef _GRAPHICS_CARD_H
12d734a8ceSbeveloper #define _GRAPHICS_CARD_H
13d734a8ceSbeveloper 
14d734a8ceSbeveloper #include <BeBuild.h>
15d734a8ceSbeveloper #include <GraphicsDefs.h>
16d734a8ceSbeveloper #include <SupportDefs.h>
17d734a8ceSbeveloper 
18d734a8ceSbeveloper /*-------------------------------------------------------------*/
19d734a8ceSbeveloper /*----- Command Constants -------------------------------------*/
20d734a8ceSbeveloper 
21d734a8ceSbeveloper enum {
22d734a8ceSbeveloper 	B_OPEN_GRAPHICS_CARD,
23d734a8ceSbeveloper 	B_CLOSE_GRAPHICS_CARD,
24d734a8ceSbeveloper 	B_GET_GRAPHICS_CARD_INFO,
25d734a8ceSbeveloper 	B_GET_GRAPHICS_CARD_HOOKS,
26d734a8ceSbeveloper 	B_SET_INDEXED_COLOR,
27d734a8ceSbeveloper 	B_GET_SCREEN_SPACES,
28d734a8ceSbeveloper 	B_CONFIG_GRAPHICS_CARD,
29d734a8ceSbeveloper 	B_GET_REFRESH_RATES,
30d734a8ceSbeveloper 	B_SET_SCREEN_GAMMA,
31d734a8ceSbeveloper 
32d734a8ceSbeveloper 	B_GET_INFO_FOR_CLONE_SIZE,
33d734a8ceSbeveloper 	B_GET_INFO_FOR_CLONE,
34d734a8ceSbeveloper 	B_SET_CLONED_GRAPHICS_CARD,
35d734a8ceSbeveloper 	B_CLOSE_CLONED_GRAPHICS_CARD,
36d734a8ceSbeveloper 	B_PROPOSE_FRAME_BUFFER,
37d734a8ceSbeveloper 	B_SET_FRAME_BUFFER,
38d734a8ceSbeveloper 	B_SET_DISPLAY_AREA,
39d734a8ceSbeveloper 	B_MOVE_DISPLAY_AREA}
40d734a8ceSbeveloper ;
41d734a8ceSbeveloper 
42d734a8ceSbeveloper /*----- Optional ---------------*/
43d734a8ceSbeveloper 
44d734a8ceSbeveloper enum {
45d734a8ceSbeveloper 	B_CRT_CONTROL = 0x0001,
46d734a8ceSbeveloper 	B_GAMMA_CONTROL = 0x0002,
47d734a8ceSbeveloper 	B_FRAME_BUFFER_CONTROL = 0x0004,
48d734a8ceSbeveloper 	B_PARALLEL_BUFFER_ACCESS = 0x0008,
49d734a8ceSbeveloper 	B_LAME_ASS_CARD = 0x0010
50d734a8ceSbeveloper };
51d734a8ceSbeveloper 
52d734a8ceSbeveloper /*-------------------------------------------------------------*/
53d734a8ceSbeveloper /*----- Structures --------------------------------------------*/
54d734a8ceSbeveloper 
55d734a8ceSbeveloper typedef struct {
56d734a8ceSbeveloper 	int16           version;
57d734a8ceSbeveloper 	int16           id;
58d734a8ceSbeveloper 	void            *frame_buffer;
59d734a8ceSbeveloper 	char            rgba_order[4];
60d734a8ceSbeveloper 	int16           flags;
61d734a8ceSbeveloper 	int16			bits_per_pixel;
62d734a8ceSbeveloper 	int16           bytes_per_row;
63d734a8ceSbeveloper 	int16			width;
64d734a8ceSbeveloper 	int16			height;
65d734a8ceSbeveloper } graphics_card_info;
66d734a8ceSbeveloper 
67d734a8ceSbeveloper 
68d734a8ceSbeveloper typedef struct {
69d734a8ceSbeveloper 	int32	        index;
70d734a8ceSbeveloper 	rgb_color       color;
71d734a8ceSbeveloper } indexed_color;
72d734a8ceSbeveloper 
73d734a8ceSbeveloper 
74d734a8ceSbeveloper typedef struct {
75d734a8ceSbeveloper 	uint32           space;
76d734a8ceSbeveloper 	float           refresh_rate;
77d734a8ceSbeveloper 	uchar           h_position;
78d734a8ceSbeveloper 	uchar           v_position;
79d734a8ceSbeveloper 	uchar           h_size;
80d734a8ceSbeveloper 	uchar           v_size;
81d734a8ceSbeveloper } graphics_card_config;
82d734a8ceSbeveloper 
83d734a8ceSbeveloper 
84d734a8ceSbeveloper typedef struct {
85d734a8ceSbeveloper 	float           min;
86d734a8ceSbeveloper 	float           max;
87d734a8ceSbeveloper 	float           current;
88d734a8ceSbeveloper } refresh_rate_info;
89d734a8ceSbeveloper 
90d734a8ceSbeveloper 
91d734a8ceSbeveloper typedef struct {
92d734a8ceSbeveloper 	void            *screen_base;
93d734a8ceSbeveloper 	void            *io_base;
94d734a8ceSbeveloper 	uint32           vendor_id;
95d734a8ceSbeveloper 	uint32           device_id;
96d734a8ceSbeveloper 	uint32           _reserved1_;
97d734a8ceSbeveloper 	uint32           _reserved2_;
98d734a8ceSbeveloper } graphics_card_spec;
99d734a8ceSbeveloper 
100d734a8ceSbeveloper 
101d734a8ceSbeveloper typedef struct {
102d734a8ceSbeveloper 	int16           x1;
103d734a8ceSbeveloper 	int16           y1;
104d734a8ceSbeveloper 	int16           x2;
105d734a8ceSbeveloper 	int16           y2;
106d734a8ceSbeveloper 	rgb_color       color;
107d734a8ceSbeveloper } rgb_color_line;
108d734a8ceSbeveloper 
109d734a8ceSbeveloper 
110d734a8ceSbeveloper typedef struct {
111d734a8ceSbeveloper 	int16           x1;
112d734a8ceSbeveloper 	int16           y1;
113d734a8ceSbeveloper 	int16           x2;
114d734a8ceSbeveloper 	int16           y2;
115d734a8ceSbeveloper 	uchar           color;
116d734a8ceSbeveloper } indexed_color_line;
117d734a8ceSbeveloper 
118d734a8ceSbeveloper 
119d734a8ceSbeveloper typedef struct {
120d734a8ceSbeveloper     int16           bits_per_pixel;
121d734a8ceSbeveloper 	int16           bytes_per_row;
122d734a8ceSbeveloper 	int16           width;
123d734a8ceSbeveloper 	int16           height;
124d734a8ceSbeveloper     int16           display_width;
125d734a8ceSbeveloper 	int16           display_height;
126d734a8ceSbeveloper 	int16           display_x;
127d734a8ceSbeveloper 	int16           display_y;
128d734a8ceSbeveloper } frame_buffer_info;
129d734a8ceSbeveloper 
130d734a8ceSbeveloper 
131d734a8ceSbeveloper typedef struct {
132d734a8ceSbeveloper 	uchar           red[256];
133d734a8ceSbeveloper 	uchar           green[256];
134d734a8ceSbeveloper 	uchar           blue[256];
135d734a8ceSbeveloper } screen_gamma;
136d734a8ceSbeveloper 
137d734a8ceSbeveloper 
138d734a8ceSbeveloper /*-------------------------------------------------------------*/
139d734a8ceSbeveloper /*----- Hook Function -----------------------------------------*/
140d734a8ceSbeveloper 
141d734a8ceSbeveloper typedef void (*graphics_card_hook) ();
142d734a8ceSbeveloper 
143d734a8ceSbeveloper #define B_GRAPHICS_HOOK_COUNT	48
144d734a8ceSbeveloper 
145d734a8ceSbeveloper 
146d734a8ceSbeveloper #ifdef __cplusplus
147d734a8ceSbeveloper extern "C" {
148d734a8ceSbeveloper #endif
149d734a8ceSbeveloper 
150*f6e4cbb9SAxel Dörfler int32	control_graphics_card(uint32, void*);
151d734a8ceSbeveloper 
152d734a8ceSbeveloper #ifdef __cplusplus
153d734a8ceSbeveloper }
154d734a8ceSbeveloper #endif
155d734a8ceSbeveloper 
156d734a8ceSbeveloper 
157d734a8ceSbeveloper /*-------------------------------------------------------------*/
158d734a8ceSbeveloper /*----- Debugging Functions ------------------------------------*/
159d734a8ceSbeveloper 
160d734a8ceSbeveloper #ifdef __cplusplus
161d734a8ceSbeveloper extern "C" {
162d734a8ceSbeveloper #endif
163d734a8ceSbeveloper 
164d734a8ceSbeveloper void    dprintf(const char *format, ...);
165d734a8ceSbeveloper bool    set_dprintf_enabled(bool);	/* returns old enable flag */
166d734a8ceSbeveloper 
167d734a8ceSbeveloper #ifdef __cplusplus
168d734a8ceSbeveloper }
169d734a8ceSbeveloper #endif
170d734a8ceSbeveloper 
171d734a8ceSbeveloper 
172d734a8ceSbeveloper /*-------------------------------------------------------------*/
173d734a8ceSbeveloper /*----- Obsolete  ---------------------------------------------*/
174d734a8ceSbeveloper #define B_HOOK_COUNT  B_GRAPHICS_HOOK_COUNT
175d734a8ceSbeveloper 
176d734a8ceSbeveloper 
177d734a8ceSbeveloper /*-------------------------------------------------------------*/
178d734a8ceSbeveloper /*-------------------------------------------------------------*/
179d734a8ceSbeveloper 
180d734a8ceSbeveloper #endif /* _GRAPHICS_CARD_H */
181d734a8ceSbeveloper 
182d734a8ceSbeveloper 
183d734a8ceSbeveloper 
184d734a8ceSbeveloper 
185d734a8ceSbeveloper 
186d734a8ceSbeveloper 
187d734a8ceSbeveloper 
188d734a8ceSbeveloper 
189