summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2010-03-31 12:01:16 +0800
committerChia-I Wu <[email protected]>2010-05-12 12:12:57 +0800
commitbcce57c2e9a1d9b203dba8fe13480889e6d19c89 (patch)
treee974365e0635003a159483fa86d49c05861d39dd
parent14a92b26ff76550c5010ddf8bcbf5226dae5183f (diff)
st/mesa: Make FEATURE_feedback and FEATURE_rastpos more modular.
Make st_cb_feedback.h FEATURE_feedback aware and st_cb_rastpos.h FEATURE_rastpos aware. Move creation of selection/feedback draw context to st_init_draw.
-rw-r--r--src/mesa/state_tracker/st_cb_feedback.c4
-rw-r--r--src/mesa/state_tracker/st_cb_feedback.h12
-rw-r--r--src/mesa/state_tracker/st_cb_rasterpos.c3
-rw-r--r--src/mesa/state_tracker/st_cb_rasterpos.h16
-rw-r--r--src/mesa/state_tracker/st_context.c20
-rw-r--r--src/mesa/state_tracker/st_draw.c16
6 files changed, 50 insertions, 21 deletions
diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c
index c85d3da84a2..e57730b5ecd 100644
--- a/src/mesa/state_tracker/st_cb_feedback.c
+++ b/src/mesa/state_tracker/st_cb_feedback.c
@@ -54,6 +54,8 @@
#include "draw/draw_pipe.h"
+#if FEATURE_feedback
+
/**
* This is actually used for both feedback and selection.
*/
@@ -302,3 +304,5 @@ void st_init_feedback_functions(struct dd_function_table *functions)
{
functions->RenderMode = st_RenderMode;
}
+
+#endif /* FEATURE_feedback */
diff --git a/src/mesa/state_tracker/st_cb_feedback.h b/src/mesa/state_tracker/st_cb_feedback.h
index 2559ba3817b..706d84960f7 100644
--- a/src/mesa/state_tracker/st_cb_feedback.h
+++ b/src/mesa/state_tracker/st_cb_feedback.h
@@ -30,8 +30,20 @@
#define ST_CB_FEEDBACK_H
+#include "main/mtypes.h"
+
+#if FEATURE_feedback
+
extern void
st_init_feedback_functions(struct dd_function_table *functions);
+#else
+
+static INLINE void
+st_init_feedback_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_feedback */
#endif /* ST_CB_FEEDBACK_H */
diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c
index 843f3200278..7b2eb8012de 100644
--- a/src/mesa/state_tracker/st_cb_rasterpos.c
+++ b/src/mesa/state_tracker/st_cb_rasterpos.c
@@ -50,6 +50,7 @@
#include "vbo/vbo.h"
+#if FEATURE_rastpos
/**
* Our special drawing pipeline stage (replaces rasterization).
@@ -267,3 +268,5 @@ void st_init_rasterpos_functions(struct dd_function_table *functions)
{
functions->RasterPos = st_RasterPos;
}
+
+#endif /* FEATURE_rastpos */
diff --git a/src/mesa/state_tracker/st_cb_rasterpos.h b/src/mesa/state_tracker/st_cb_rasterpos.h
index 2b992e1405e..d2ed7297f15 100644
--- a/src/mesa/state_tracker/st_cb_rasterpos.h
+++ b/src/mesa/state_tracker/st_cb_rasterpos.h
@@ -28,6 +28,20 @@
#ifndef ST_CB_RASTERPOS_H
#define ST_CB_RASTERPOS_H
+
+#include "main/mtypes.h"
+
+#if FEATURE_rastpos
+
extern void st_init_rasterpos_functions(struct dd_function_table *functions);
-#endif
+#else
+
+static INLINE void
+st_init_rasterpos_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_rastpos */
+
+#endif /* ST_CB_RASTERPOS_H */
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index bab54811b4e..5c9462a399b 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -45,9 +45,7 @@
#endif
#include "st_cb_eglimage.h"
#include "st_cb_fbo.h"
-#if FEATURE_feedback
#include "st_cb_feedback.h"
-#endif
#include "st_cb_program.h"
#include "st_cb_queryobj.h"
#include "st_cb_readpixels.h"
@@ -64,7 +62,6 @@
#include "util/u_inlines.h"
#include "util/u_rect.h"
#include "util/u_surface.h"
-#include "draw/draw_context.h"
#include "cso_cache/cso_context.h"
@@ -128,18 +125,6 @@ st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe )
/* state tracker needs the VBO module */
_vbo_CreateContext(ctx);
-#if FEATURE_feedback || FEATURE_rastpos
- st->draw = draw_create(pipe); /* for selection/feedback */
-
- /* Disable draw options that might convert points/lines to tris, etc.
- * as that would foul-up feedback/selection mode.
- */
- draw_wide_line_threshold(st->draw, 1000.0f);
- draw_wide_point_threshold(st->draw, 1000.0f);
- draw_enable_line_stipple(st->draw, FALSE);
- draw_enable_point_sprites(st->draw, FALSE);
-#endif
-
st->dirty.mesa = ~0;
st->dirty.st = ~0;
@@ -224,9 +209,6 @@ static void st_destroy_context_priv( struct st_context *st )
{
uint i;
-#if FEATURE_feedback || FEATURE_rastpos
- draw_destroy(st->draw);
-#endif
st_destroy_atoms( st );
st_destroy_draw( st );
st_destroy_generate_mipmap(st);
@@ -315,9 +297,7 @@ void st_init_driver_functions(struct dd_function_table *functions)
st_init_eglimage_functions(functions);
st_init_fbo_functions(functions);
-#if FEATURE_feedback
st_init_feedback_functions(functions);
-#endif
st_init_program_functions(functions);
#if FEATURE_queryobj
st_init_query_functions(functions);
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 4137596bd40..eb2e5b2bbf7 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -57,6 +57,7 @@
#include "pipe/p_defines.h"
#include "util/u_inlines.h"
#include "util/u_format.h"
+#include "draw/draw_context.h"
#include "cso_cache/cso_context.h"
@@ -741,11 +742,26 @@ void st_init_draw( struct st_context *st )
GLcontext *ctx = st->ctx;
vbo_set_draw_func(ctx, st_draw_vbo);
+
+#if FEATURE_feedback || FEATURE_rastpos
+ st->draw = draw_create(st->pipe); /* for selection/feedback */
+
+ /* Disable draw options that might convert points/lines to tris, etc.
+ * as that would foul-up feedback/selection mode.
+ */
+ draw_wide_line_threshold(st->draw, 1000.0f);
+ draw_wide_point_threshold(st->draw, 1000.0f);
+ draw_enable_line_stipple(st->draw, FALSE);
+ draw_enable_point_sprites(st->draw, FALSE);
+#endif
}
void st_destroy_draw( struct st_context *st )
{
+#if FEATURE_feedback || FEATURE_rastpos
+ draw_destroy(st->draw);
+#endif
}