00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00035 #ifndef P_WINSYS_H
00036 #define P_WINSYS_H
00037
00038
00039 #include "p_format.h"
00040
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046
00048 struct pipe_fence_handle;
00049
00050 struct pipe_surface;
00051
00052
00063 struct pipe_winsys
00064 {
00065 void (*destroy)( struct pipe_winsys *ws );
00066
00068 const char *(*get_name)( struct pipe_winsys *ws );
00069
00074 void (*flush_frontbuffer)( struct pipe_winsys *ws,
00075 struct pipe_surface *surf,
00076 void *context_private );
00077
00078
00080 struct pipe_surface *(*surface_alloc)(struct pipe_winsys *ws);
00081
00087 int (*surface_alloc_storage)(struct pipe_winsys *ws,
00088 struct pipe_surface *surf,
00089 unsigned width, unsigned height,
00090 enum pipe_format format,
00091 unsigned flags,
00092 unsigned tex_usage);
00093
00094 void (*surface_release)(struct pipe_winsys *ws, struct pipe_surface **s);
00095
00096
00111 struct pipe_buffer *(*buffer_create)( struct pipe_winsys *ws,
00112 unsigned alignment,
00113 unsigned usage,
00114 unsigned size );
00115
00137 struct pipe_buffer *(*user_buffer_create)(struct pipe_winsys *ws,
00138 void *ptr,
00139 unsigned bytes);
00140
00145 void *(*buffer_map)( struct pipe_winsys *ws,
00146 struct pipe_buffer *buf,
00147 unsigned usage );
00148
00149 void (*buffer_unmap)( struct pipe_winsys *ws,
00150 struct pipe_buffer *buf );
00151
00152 void (*buffer_destroy)( struct pipe_winsys *ws,
00153 struct pipe_buffer *buf );
00154
00155
00157 void (*fence_reference)( struct pipe_winsys *ws,
00158 struct pipe_fence_handle **ptr,
00159 struct pipe_fence_handle *fence );
00160
00166 int (*fence_signalled)( struct pipe_winsys *ws,
00167 struct pipe_fence_handle *fence,
00168 unsigned flag );
00169
00175 int (*fence_finish)( struct pipe_winsys *ws,
00176 struct pipe_fence_handle *fence,
00177 unsigned flag );
00178
00179 };
00180
00181
00182 #ifdef __cplusplus
00183 }
00184 #endif
00185
00186 #endif