p_winsys.h

Go to the documentation of this file.
00001  /**************************************************************************
00002  * 
00003  * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
00004  * All Rights Reserved.
00005  * 
00006  * Permission is hereby granted, free of charge, to any person obtaining a
00007  * copy of this software and associated documentation files (the
00008  * "Software"), to deal in the Software without restriction, including
00009  * without limitation the rights to use, copy, modify, merge, publish,
00010  * distribute, sub license, and/or sell copies of the Software, and to
00011  * permit persons to whom the Software is furnished to do so, subject to
00012  * the following conditions:
00013  * 
00014  * The above copyright notice and this permission notice (including the
00015  * next paragraph) shall be included in all copies or substantial portions
00016  * of the Software.
00017  * 
00018  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00019  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00020  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
00021  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
00022  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00023  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00024  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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 /* P_WINSYS_H */

Generated on Tue Sep 29 06:25:17 2009 for Gallium3D by  doxygen 1.5.4