*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/*
* dga.h - Sun Direct Graphics Access interface
*/
#ifndef _DGA_H
#define _DGA_H
#ifndef SERVER_DGA
#endif /* SERVER_DGA */
#include "dga_externaldefs.h"
#if defined (_POSIX_C_SOURCE)
#endif
#ifdef SERVER_DGA
#define Display void
#define Bool int
#endif /* SERVER_DGA */
#define DGA_RTN_NOT_CACHED 0
typedef struct dga_curs_memimage {
void *memptr;
typedef struct dga_dbinfo {
short number_buffers;
short read_buffer;
short write_buffer;
short display_buffer;
} Dga_dbinfo;
#ifndef DGA_NUM_BUFFER_TYPES
/* The following buffer types also defined(duplicated) in
* dga_winshared.h file. * I can't include dga.h in hw/solaris/dga
* due to some declarations inconsistency.
* please also update dga_winshared.h which is located
*/
/* Known types of ancillary buffers */
typedef enum {
DGA_DEPTH_BUFFER =0,
#endif
typedef void *Dga_buffer;
typedef struct dga_widinfo {
} Dga_widinfo;
typedef void* Dga_window;
typedef void* Dga_cmap;
/* May be either a window, the main window of a multibuffer set, or a pixmap */
typedef void* Dga_drawable;
typedef struct dga_opaque {
int loc_1;
int loc_4;
int loc_10;
} *Dga_opaque;
typedef struct dga_opaque_draw {
int loc_1;
int loc_4;
int loc_10;
} *Dga_opaque_draw;
/* Types for drawable notification functions */
do { \
} \
} while (0)
do { \
DGA_UNLOCK(win); \
} \
} while (0)
/* this is so we can we can enter the opaque interface */
{ \
( \
? 0 \
); \
} \
}
{ \
DGA_UNLOCK(dgadraw); \
} \
}
{ \
/* Always lock pixmap first. */ \
/* We lock the src pixmap and since all pixmaps share the same \
* lock page, the dst pixmap is locked as well. */ \
\
\
/* Now update dest pixmap's modif */ \
\
((dgadst), (bufIndexDst))); \
} \
}
{ \
/* Always unlock window first */ \
/* Unlock the src pixmap */ \
} \
}
#ifdef __cplusplus
extern "C" {
#endif
/* General DGA functions */
extern void dga_init_version(int);
/*
* X protocol extension functions
*/
/*
* Window Compatibility Interface - Window grabber functions
*/
extern void dga_win_ungrab(Dga_window, int);
extern char *dga_win_fbname(Dga_window);
extern int dga_win_devfd(Dga_window);
extern int dga_win_clipchg(Dga_window);
extern int dga_win_curschg(Dga_window);
extern int dga_win_rtnchg(Dga_window);
extern short *dga_win_clipinfo(Dga_window);
extern void dga_win_bbox(Dga_window, int *, int *, int *, int *);
extern int dga_win_singlerect(Dga_window);
extern int dga_win_empty(Dga_window);
extern int dga_win_obscured(Dga_window);
extern int dga_win_cursactive(Dga_window);
extern void dga_win_cursupdate(Dga_window, void(*)(void *,
Dga_window, int, int, Dga_curs_memimage*), void *);
extern void *dga_win_bboxinfop(Dga_window);
extern void dga_win_set_client_infop(Dga_window, void *);
extern void *dga_win_get_client_infop(Dga_window);
/*
* Colormap grabber functions
*/
extern void dga_cm_ungrab(Dga_cmap, int);
u_char *);
u_char *, void (*)(Dga_window, int,
extern int dga_cm_devfd(Dga_cmap);
extern void dga_cm_set_client_infop(Dga_cmap, void *);
extern void *dga_cm_get_client_infop(Dga_cmap);
extern void *dga_cm_devinfop(Dga_cmap);
/*
* Window Compatibility Interface - double buffering functions
*/
u_int * );
extern int dga_db_ungrab(Dga_window);
extern void dga_db_write(Dga_window, int,
int(*)(void*, Dga_window, int), void *);
extern void dga_db_read(Dga_window,int,
int(*)(void*, Dga_window, int), void *);
extern void dga_db_display(Dga_window, int,
int(*)(void*, Dga_window, int), void *);
extern void dga_db_interval(Dga_window, int);
extern void dga_db_interval_wait(Dga_window);
extern int dga_db_interval_check(Dga_window);
extern int dga_db_write_inquire(Dga_window);
extern int dga_db_read_inquire(Dga_window);
extern int dga_db_display_inquire(Dga_window);
extern int dga_db_display_done(Dga_window, int,
int (*)(Dga_window));
/*
* Window Compatibility Interface - Retained window grabber functions
*/
extern int dga_rtn_grab(Dga_window);
extern int dga_rtn_ungrab(Dga_window);
extern int dga_rtn_active(Dga_window);
extern int dga_rtn_cached(Dga_window);
extern void *dga_rtn_devinfo(Dga_window);
extern void dga_rtn_dimensions(Dga_window, short *, short *,
u_int*);
extern void *dga_rtn_pixels(Dga_window);
/*
* Drawable grabber functions
*/
void *client_data);
void **client_data);
void *client_data);
char **name);
void *client_data);
void **client_data);
void *client_data);
void **client_data);
void *client_data);
void **client_data);
/*
* Drawable grabber functions - Buffer Control Compatibility
*/
int (*writefunc)(void*, Dga_drawable, int),
void *data);
int (*readfunc)(void*, Dga_drawable, int),
void *data);
int (*visfunc)(void*, Dga_drawable, int),
void *data);
int (*display_done_func)(Dga_drawable));
/*
* Misc. grabber functions
*/
/*
* Window Compatibility Interface - Ancillary buffers functions
* New feature for 2.6
*/
Dga_buffer_type, int);
extern int dga_buffer_site(Dga_buffer);
extern int dga_draw_bufferchg(Dga_drawable);
extern int dga_buffer_sitechg(Dga_buffer, int *);
extern void* dga_buffer_address(Dga_buffer);
extern int dga_buffer_linebytes(Dga_buffer);
extern int dga_buffer_bitsperpixel(Dga_buffer);
#ifdef __cplusplus
}
#endif
#endif /* _DGA_H */