svga: Add more swrast debuging
This commit is contained in:
@@ -47,6 +47,8 @@ DEBUG_GET_ONCE_BOOL_OPTION(no_swtnl, "SVGA_NO_SWTNL", FALSE)
|
||||
DEBUG_GET_ONCE_BOOL_OPTION(force_swtnl, "SVGA_FORCE_SWTNL", FALSE);
|
||||
DEBUG_GET_ONCE_BOOL_OPTION(use_min_mipmap, "SVGA_USE_MIN_MIPMAP", FALSE);
|
||||
DEBUG_GET_ONCE_NUM_OPTION(disable_shader, "SVGA_DISABLE_SHADER", ~0);
|
||||
DEBUG_GET_ONCE_BOOL_OPTION(no_line_width, "SVGA_NO_LINE_WIDTH", FALSE);
|
||||
DEBUG_GET_ONCE_BOOL_OPTION(force_hw_line_stipple, "SVGA_FORCE_HW_LINE_STIPPLE", FALSE);
|
||||
|
||||
static void svga_destroy( struct pipe_context *pipe )
|
||||
{
|
||||
@@ -121,6 +123,8 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen,
|
||||
svga->debug.force_swtnl = debug_get_option_force_swtnl();
|
||||
svga->debug.use_min_mipmap = debug_get_option_use_min_mipmap();
|
||||
svga->debug.disable_shader = debug_get_option_disable_shader();
|
||||
svga->debug.no_line_width = debug_get_option_no_line_width();
|
||||
svga->debug.force_hw_line_stipple = debug_get_option_force_hw_line_stipple();
|
||||
|
||||
if (!svga_init_swtnl(svga))
|
||||
goto no_swtnl;
|
||||
|
||||
@@ -148,6 +148,10 @@ struct svga_rasterizer_state {
|
||||
|
||||
unsigned hw_unfilled:16; /* PIPE_POLYGON_MODE_x */
|
||||
unsigned need_pipeline:16; /* which prims do we need help for? */
|
||||
|
||||
const char* need_pipeline_tris_str;
|
||||
const char* need_pipeline_lines_str;
|
||||
const char* need_pipeline_points_str;
|
||||
};
|
||||
|
||||
struct svga_sampler_state {
|
||||
@@ -317,6 +321,9 @@ struct svga_context
|
||||
unsigned shader_id;
|
||||
|
||||
unsigned disable_shader;
|
||||
|
||||
boolean no_line_width;
|
||||
boolean force_hw_line_stipple;
|
||||
} debug;
|
||||
|
||||
struct {
|
||||
|
||||
@@ -64,7 +64,9 @@ static void *
|
||||
svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
const struct pipe_rasterizer_state *templ)
|
||||
{
|
||||
struct svga_context *svga = svga_context(pipe);
|
||||
struct svga_rasterizer_state *rast = CALLOC_STRUCT( svga_rasterizer_state );
|
||||
|
||||
/* need this for draw module. */
|
||||
rast->templ = *templ;
|
||||
|
||||
@@ -93,17 +95,22 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
|
||||
/* Use swtnl + decomposition implement these:
|
||||
*/
|
||||
if (templ->poly_stipple_enable)
|
||||
if (templ->poly_stipple_enable) {
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
|
||||
rast->need_pipeline_tris_str = "poly stipple";
|
||||
}
|
||||
|
||||
if (templ->line_width != 1.0 &&
|
||||
templ->line_width != 0.0)
|
||||
templ->line_width != 0.0 &&
|
||||
!svga->debug.no_line_width) {
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_LINES;
|
||||
rast->need_pipeline_lines_str = "line width";
|
||||
}
|
||||
|
||||
if (templ->line_stipple_enable) {
|
||||
/* LinePattern not implemented on all backends.
|
||||
*/
|
||||
if (0) {
|
||||
if (!svga->debug.force_hw_line_stipple) {
|
||||
SVGA3dLinePattern lp;
|
||||
lp.repeat = templ->line_stipple_factor + 1;
|
||||
lp.pattern = templ->line_stipple_pattern;
|
||||
@@ -111,11 +118,14 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
}
|
||||
else {
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_LINES;
|
||||
rast->need_pipeline_lines_str = "line stipple";
|
||||
}
|
||||
}
|
||||
|
||||
if (templ->point_smooth)
|
||||
if (templ->point_smooth) {
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_POINTS;
|
||||
rast->need_pipeline_points_str = "smooth points";
|
||||
}
|
||||
|
||||
{
|
||||
int fill_front = templ->fill_front;
|
||||
@@ -148,6 +158,7 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
* front/back fill modes:
|
||||
*/
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
|
||||
rast->need_pipeline_tris_str = "different front/back fillmodes";
|
||||
}
|
||||
else {
|
||||
offset = offset_front;
|
||||
@@ -172,6 +183,7 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
{
|
||||
fill = PIPE_POLYGON_MODE_FILL;
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
|
||||
rast->need_pipeline_tris_str = "unfilled primitives with no index manipulation";
|
||||
}
|
||||
|
||||
/* If we are decomposing to lines, and lines need the pipeline,
|
||||
@@ -182,6 +194,7 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
{
|
||||
fill = PIPE_POLYGON_MODE_FILL;
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
|
||||
rast->need_pipeline_tris_str = "decomposing lines";
|
||||
}
|
||||
|
||||
/* Similarly for points:
|
||||
@@ -191,6 +204,7 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
|
||||
{
|
||||
fill = PIPE_POLYGON_MODE_FILL;
|
||||
rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
|
||||
rast->need_pipeline_tris_str = "decomposing points";
|
||||
}
|
||||
|
||||
if (offset) {
|
||||
|
||||
@@ -118,6 +118,11 @@ static int update_need_pipeline( struct svga_context *svga,
|
||||
__FUNCTION__,
|
||||
svga->curr.rast->need_pipeline,
|
||||
(1 << svga->curr.reduced_prim) );
|
||||
SVGA_DBG(DEBUG_SWTNL, "%s: rast need_pipeline tris (%s), lines (%s), points (%s)\n",
|
||||
__FUNCTION__,
|
||||
svga->curr.rast->need_pipeline_tris_str,
|
||||
svga->curr.rast->need_pipeline_lines_str,
|
||||
svga->curr.rast->need_pipeline_points_str);
|
||||
need_pipeline = TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user