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