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.
This commit is contained in:
@@ -54,6 +54,8 @@
|
|||||||
#include "draw/draw_pipe.h"
|
#include "draw/draw_pipe.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if FEATURE_feedback
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is actually used for both feedback and selection.
|
* 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;
|
functions->RenderMode = st_RenderMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* FEATURE_feedback */
|
||||||
|
@@ -30,8 +30,20 @@
|
|||||||
#define ST_CB_FEEDBACK_H
|
#define ST_CB_FEEDBACK_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "main/mtypes.h"
|
||||||
|
|
||||||
|
#if FEATURE_feedback
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
st_init_feedback_functions(struct dd_function_table *functions);
|
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 */
|
#endif /* ST_CB_FEEDBACK_H */
|
||||||
|
@@ -50,6 +50,7 @@
|
|||||||
#include "vbo/vbo.h"
|
#include "vbo/vbo.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if FEATURE_rastpos
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Our special drawing pipeline stage (replaces rasterization).
|
* 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;
|
functions->RasterPos = st_RasterPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* FEATURE_rastpos */
|
||||||
|
@@ -28,6 +28,20 @@
|
|||||||
#ifndef ST_CB_RASTERPOS_H
|
#ifndef ST_CB_RASTERPOS_H
|
||||||
#define 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);
|
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 */
|
||||||
|
@@ -45,9 +45,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "st_cb_eglimage.h"
|
#include "st_cb_eglimage.h"
|
||||||
#include "st_cb_fbo.h"
|
#include "st_cb_fbo.h"
|
||||||
#if FEATURE_feedback
|
|
||||||
#include "st_cb_feedback.h"
|
#include "st_cb_feedback.h"
|
||||||
#endif
|
|
||||||
#include "st_cb_program.h"
|
#include "st_cb_program.h"
|
||||||
#include "st_cb_queryobj.h"
|
#include "st_cb_queryobj.h"
|
||||||
#include "st_cb_readpixels.h"
|
#include "st_cb_readpixels.h"
|
||||||
@@ -64,7 +62,6 @@
|
|||||||
#include "util/u_inlines.h"
|
#include "util/u_inlines.h"
|
||||||
#include "util/u_rect.h"
|
#include "util/u_rect.h"
|
||||||
#include "util/u_surface.h"
|
#include "util/u_surface.h"
|
||||||
#include "draw/draw_context.h"
|
|
||||||
#include "cso_cache/cso_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 */
|
/* state tracker needs the VBO module */
|
||||||
_vbo_CreateContext(ctx);
|
_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.mesa = ~0;
|
||||||
st->dirty.st = ~0;
|
st->dirty.st = ~0;
|
||||||
|
|
||||||
@@ -224,9 +209,6 @@ static void st_destroy_context_priv( struct st_context *st )
|
|||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
#if FEATURE_feedback || FEATURE_rastpos
|
|
||||||
draw_destroy(st->draw);
|
|
||||||
#endif
|
|
||||||
st_destroy_atoms( st );
|
st_destroy_atoms( st );
|
||||||
st_destroy_draw( st );
|
st_destroy_draw( st );
|
||||||
st_destroy_generate_mipmap(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_eglimage_functions(functions);
|
||||||
|
|
||||||
st_init_fbo_functions(functions);
|
st_init_fbo_functions(functions);
|
||||||
#if FEATURE_feedback
|
|
||||||
st_init_feedback_functions(functions);
|
st_init_feedback_functions(functions);
|
||||||
#endif
|
|
||||||
st_init_program_functions(functions);
|
st_init_program_functions(functions);
|
||||||
#if FEATURE_queryobj
|
#if FEATURE_queryobj
|
||||||
st_init_query_functions(functions);
|
st_init_query_functions(functions);
|
||||||
|
@@ -57,6 +57,7 @@
|
|||||||
#include "pipe/p_defines.h"
|
#include "pipe/p_defines.h"
|
||||||
#include "util/u_inlines.h"
|
#include "util/u_inlines.h"
|
||||||
#include "util/u_format.h"
|
#include "util/u_format.h"
|
||||||
|
#include "draw/draw_context.h"
|
||||||
#include "cso_cache/cso_context.h"
|
#include "cso_cache/cso_context.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -741,11 +742,26 @@ void st_init_draw( struct st_context *st )
|
|||||||
GLcontext *ctx = st->ctx;
|
GLcontext *ctx = st->ctx;
|
||||||
|
|
||||||
vbo_set_draw_func(ctx, st_draw_vbo);
|
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 )
|
void st_destroy_draw( struct st_context *st )
|
||||||
{
|
{
|
||||||
|
#if FEATURE_feedback || FEATURE_rastpos
|
||||||
|
draw_destroy(st->draw);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user