summaryrefslogtreecommitdiff
path: root/src/gallium/include/pipe
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-03-30 19:58:03 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-03-30 19:58:03 +1000
commit03c60e0fb691d39a168a8825ace7150ef3a20e02 (patch)
treee7433c539a7584d29d4a6bf23aacdc348167aed8 /src/gallium/include/pipe
parent68395f6726183a0776e324b900e429449ede2b22 (diff)
parenta52c0416d1f2105960b4646e2e268aed26814689 (diff)
Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'src/gallium/include/pipe')
-rw-r--r--src/gallium/include/pipe/p_context.h75
-rw-r--r--src/gallium/include/pipe/p_debug.h8
-rw-r--r--src/gallium/include/pipe/p_defines.h3
-rw-r--r--src/gallium/include/pipe/p_state.h7
-rw-r--r--src/gallium/include/pipe/p_util.h7
5 files changed, 48 insertions, 52 deletions
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
index a3824601be..324f70185a 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -37,33 +37,30 @@ extern "C" {
struct pipe_screen;
-
+struct pipe_fence_handle;
struct pipe_state_cache;
-
-/* Opaque driver handles:
- */
struct pipe_query;
+
/**
* Gallium rendering context. Basically:
* - state setting functions
* - VBO drawing functions
* - surface functions
- * - device queries
*/
struct pipe_context {
struct pipe_winsys *winsys;
struct pipe_screen *screen;
- void *priv; /** context private data (for DRI for example) */
- void *draw; /** private, for draw module (temporary? */
+ void *priv; /**< context private data (for DRI for example) */
+ void *draw; /**< private, for draw module (temporary?) */
void (*destroy)( struct pipe_context * );
- /*
- * Drawing.
- * Return false on fallbacks (temporary??)
+ /**
+ * VBO drawing (return false on fallbacks (temporary??))
*/
+ /*@{*/
boolean (*draw_arrays)( struct pipe_context *pipe,
unsigned mode, unsigned start, unsigned count);
@@ -71,11 +68,13 @@ struct pipe_context {
struct pipe_buffer *indexBuffer,
unsigned indexSize,
unsigned mode, unsigned start, unsigned count);
+ /*@}*/
/**
* Query objects
*/
+ /*@{*/
struct pipe_query *(*create_query)( struct pipe_context *pipe,
unsigned query_type );
@@ -89,10 +88,12 @@ struct pipe_context {
struct pipe_query *q,
boolean wait,
uint64 *result);
+ /*@}*/
- /*
- * State functions
+ /**
+ * State functions (create/bind/destroy state objects)
*/
+ /*@{*/
void * (*create_blend_state)(struct pipe_context *,
const struct pipe_blend_state *);
void (*bind_blend_state)(struct pipe_context *, void *);
@@ -122,10 +123,12 @@ struct pipe_context {
const struct pipe_shader_state *);
void (*bind_vs_state)(struct pipe_context *, void *);
void (*delete_vs_state)(struct pipe_context *, void *);
+ /*@}*/
- /* The following look more properties than states.
- * maybe combine a few of them into states or pass them
- * in the bind calls to the state */
+ /**
+ * Parameter-like state (or properties)
+ */
+ /*@{*/
void (*set_blend_color)( struct pipe_context *,
const struct pipe_blend_color * );
@@ -145,32 +148,27 @@ struct pipe_context {
void (*set_scissor_state)( struct pipe_context *,
const struct pipe_scissor_state * );
+ void (*set_viewport_state)( struct pipe_context *,
+ const struct pipe_viewport_state * );
- /* Currently a sampler is constrained to sample from a single texture:
- */
void (*set_sampler_textures)( struct pipe_context *,
- unsigned num,
+ unsigned num_textures,
struct pipe_texture ** );
- void (*set_viewport_state)( struct pipe_context *,
- const struct pipe_viewport_state * );
-
- /*
- * Vertex arrays
- */
- void (*set_vertex_buffer)( struct pipe_context *,
- unsigned index,
- const struct pipe_vertex_buffer * );
+ void (*set_vertex_buffers)( struct pipe_context *,
+ unsigned num_buffers,
+ const struct pipe_vertex_buffer * );
- void (*set_vertex_element)( struct pipe_context *,
- unsigned index,
- const struct pipe_vertex_element * );
+ void (*set_vertex_elements)( struct pipe_context *,
+ unsigned num_elements,
+ const struct pipe_vertex_element * );
+ /*@}*/
- /*
+ /**
* Surface functions
*/
-
+ /*@{*/
void (*surface_copy)(struct pipe_context *pipe,
unsigned do_flip, /*<< flip surface contents vertically */
struct pipe_surface *dest,
@@ -189,20 +187,19 @@ struct pipe_context {
void (*clear)(struct pipe_context *pipe,
struct pipe_surface *ps,
unsigned clearValue);
+ /*@}*/
- /**
- * Called when texture data is changed.
- */
+
+ /** Called when texture data is changed */
void (*texture_update)(struct pipe_context *pipe,
struct pipe_texture *texture,
uint face, uint dirtyLevelsMask);
-
- /* Flush rendering:
- */
+ /** Flush rendering (flags = bitmask of PIPE_FLUSH_x tokens) */
void (*flush)( struct pipe_context *pipe,
- unsigned flags );
+ unsigned flags,
+ struct pipe_fence_handle **fence );
};
diff --git a/src/gallium/include/pipe/p_debug.h b/src/gallium/include/pipe/p_debug.h
index 577cdaebcd..9e52ad9a37 100644
--- a/src/gallium/include/pipe/p_debug.h
+++ b/src/gallium/include/pipe/p_debug.h
@@ -90,6 +90,8 @@ debug_printf(const char *format, ...)
va_start(ap, format);
_debug_vprintf(format, ap);
va_end(ap);
+#else
+ (void) format; /* silence warning */
#endif
}
@@ -191,7 +193,7 @@ void _debug_assert_fail(const char *expr,
*/
#ifdef DEBUG
#define debug_warning(__msg) \
- _debug_printf("%s:%u:%s: warning: %s\n", __FILE__, __LINE__, __FUNCTION__, (__msg))
+ _debug_printf("%s:%u:%s: warning: %s\n", __FILE__, __LINE__, __FUNCTION__, __msg)
#else
#define debug_warning(__msg) \
((void)0)
@@ -203,10 +205,10 @@ void _debug_assert_fail(const char *expr,
*/
#ifdef DEBUG
#define debug_error(__msg) \
- _debug_printf("%s:%u:%s: error: %s\n", __FILE__, __LINE__, __FUNCTION__, (__msg))
+ _debug_printf("%s:%u:%s: error: %s\n", __FILE__, __LINE__, __FUNCTION__, __msg)
#else
#define debug_error(__msg) \
- _debug_printf("error: %s\n", __msg))
+ _debug_printf("error: %s\n", __msg)
#endif
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index bc938ba253..586951d956 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -201,8 +201,7 @@ enum pipe_texture_target {
*/
#define PIPE_FLUSH_RENDER_CACHE 0x1
#define PIPE_FLUSH_TEXTURE_CACHE 0x2
-#define PIPE_FLUSH_WAIT 0x4
-#define PIPE_FLUSH_SWAPBUFFERS 0x8
+#define PIPE_FLUSH_SWAPBUFFERS 0x4
/**
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 3e531c4da4..0eeee47a9a 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -51,10 +51,11 @@ extern "C" {
/**
* Implementation limits
*/
-#define PIPE_MAX_SAMPLERS 8
+#define PIPE_MAX_SAMPLERS 16
#define PIPE_MAX_CLIP_PLANES 6
#define PIPE_MAX_CONSTANT 32
-#define PIPE_ATTRIB_MAX 32
+#define PIPE_MAX_ATTRIBS 32
+#define PIPE_ATTRIB_MAX 32 /* XXX obsolete - remove */
#define PIPE_MAX_COLOR_BUFS 8
#define PIPE_MAX_TEXTURE_LEVELS 16
#define PIPE_MAX_FEEDBACK_ATTRIBS 16
@@ -112,6 +113,7 @@ struct pipe_rasterizer_state
unsigned bypass_clipping:1;
unsigned bypass_vs:1; /**< vertices are already fully transformed */
unsigned origin_lower_left:1; /**< Is (0,0) the lower-left corner? */
+ unsigned flatshade_first:1; /**< take color attribute from the first vertex of a primitive */
float line_width;
float point_size; /**< used when no per-vertex size */
@@ -241,7 +243,6 @@ struct pipe_sampler_state
unsigned min_img_filter:2; /**< PIPE_TEX_FILTER_x */
unsigned min_mip_filter:2; /**< PIPE_TEX_MIPFILTER_x */
unsigned mag_img_filter:2; /**< PIPE_TEX_FILTER_x */
- unsigned compare:1; /**< shadow/depth compare enabled? */
unsigned compare_mode:1; /**< PIPE_TEX_COMPARE_x */
unsigned compare_func:3; /**< PIPE_FUNC_x */
unsigned normalized_coords:1; /**< Are coords normalized to [0,1]? */
diff --git a/src/gallium/include/pipe/p_util.h b/src/gallium/include/pipe/p_util.h
index 505626c60b..1e7b8181f9 100644
--- a/src/gallium/include/pipe/p_util.h
+++ b/src/gallium/include/pipe/p_util.h
@@ -51,7 +51,6 @@ extern "C" {
debug_free( __FILE__, __LINE__, __FUNCTION__, _ptr )
#define REALLOC( _ptr, _old_size, _size ) \
debug_realloc( __FILE__, __LINE__, __FUNCTION__, _ptr, _old_size, _size )
-#define GETENV( X ) NULL
#else
@@ -118,8 +117,6 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
return new_ptr;
}
-#define GETENV( X ) NULL
-
#else /* !WIN32 */
#define MALLOC( SIZE ) malloc( SIZE )
@@ -130,8 +127,6 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
#define REALLOC( OLDPTR, OLDSIZE, NEWSIZE ) realloc( OLDPTR, NEWSIZE )
-#define GETENV( X ) getenv( X )
-
#endif /* !WIN32 */
#endif /* !DEBUG */
@@ -139,6 +134,8 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
#define CALLOC_STRUCT(T) (struct T *) CALLOC(1, sizeof(struct T))
+#define GETENV( X ) debug_get_option( X, NULL )
+
/**
* Return memory on given byte alignment