From 764d367a62c13ecb2f0cf44cd3ee68136fd29ff6 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 21 Dec 2021 15:25:23 -0800 Subject: softpipe: Drop the quad pstipple stage. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's unused, and it doesn't have the information it needs ("what is the prim type after poly fill mode but without considering wide point/line-to-triangle conversion) to stipple correctly. Reviewed-by: Zoltán Böszőrményi Part-of: --- src/gallium/drivers/softpipe/meson.build | 1 - src/gallium/drivers/softpipe/sp_context.c | 4 -- src/gallium/drivers/softpipe/sp_context.h | 1 - src/gallium/drivers/softpipe/sp_quad_pipe.c | 5 -- src/gallium/drivers/softpipe/sp_quad_pipe.h | 1 - src/gallium/drivers/softpipe/sp_quad_stipple.c | 81 ------------------------- src/gallium/drivers/softpipe/sp_state_derived.c | 1 - 7 files changed, 94 deletions(-) delete mode 100644 src/gallium/drivers/softpipe/sp_quad_stipple.c diff --git a/src/gallium/drivers/softpipe/meson.build b/src/gallium/drivers/softpipe/meson.build index 77b0c9ca3a0..e3bdf7e480d 100644 --- a/src/gallium/drivers/softpipe/meson.build +++ b/src/gallium/drivers/softpipe/meson.build @@ -46,7 +46,6 @@ files_softpipe = files( 'sp_quad.h', 'sp_quad_pipe.c', 'sp_quad_pipe.h', - 'sp_quad_stipple.c', 'sp_query.c', 'sp_query.h', 'sp_screen.c', diff --git a/src/gallium/drivers/softpipe/sp_context.c b/src/gallium/drivers/softpipe/sp_context.c index a633a43a431..0f5a882eaf4 100644 --- a/src/gallium/drivers/softpipe/sp_context.c +++ b/src/gallium/drivers/softpipe/sp_context.c @@ -84,9 +84,6 @@ softpipe_destroy( struct pipe_context *pipe ) if (softpipe->quad.blend) softpipe->quad.blend->destroy( softpipe->quad.blend ); - if (softpipe->quad.pstipple) - softpipe->quad.pstipple->destroy( softpipe->quad.pstipple ); - if (softpipe->pipe.stream_uploader) u_upload_destroy(softpipe->pipe.stream_uploader); @@ -278,7 +275,6 @@ softpipe_create_context(struct pipe_screen *screen, softpipe->quad.shade = sp_quad_shade_stage(softpipe); softpipe->quad.depth_test = sp_quad_depth_test_stage(softpipe); softpipe->quad.blend = sp_quad_blend_stage(softpipe); - softpipe->quad.pstipple = sp_quad_polygon_stipple_stage(softpipe); softpipe->pipe.stream_uploader = u_upload_create_default(&softpipe->pipe); if (!softpipe->pipe.stream_uploader) diff --git a/src/gallium/drivers/softpipe/sp_context.h b/src/gallium/drivers/softpipe/sp_context.h index cd2e498de6b..70aac737960 100644 --- a/src/gallium/drivers/softpipe/sp_context.h +++ b/src/gallium/drivers/softpipe/sp_context.h @@ -165,7 +165,6 @@ struct softpipe_context { struct quad_stage *shade; struct quad_stage *depth_test; struct quad_stage *blend; - struct quad_stage *pstipple; struct quad_stage *first; /**< points to one of the above stages */ } quad; diff --git a/src/gallium/drivers/softpipe/sp_quad_pipe.c b/src/gallium/drivers/softpipe/sp_quad_pipe.c index d645abf3f93..444509104fe 100644 --- a/src/gallium/drivers/softpipe/sp_quad_pipe.c +++ b/src/gallium/drivers/softpipe/sp_quad_pipe.c @@ -62,10 +62,5 @@ sp_build_quad_pipeline(struct softpipe_context *sp) insert_stage_at_head( sp, sp->quad.depth_test ); insert_stage_at_head( sp, sp->quad.shade ); } - -#if !DO_PSTIPPLE_IN_DRAW_MODULE && !DO_PSTIPPLE_IN_HELPER_MODULE - if (sp->rasterizer->poly_stipple_enable) - insert_stage_at_head( sp, sp->quad.pstipple ); -#endif } diff --git a/src/gallium/drivers/softpipe/sp_quad_pipe.h b/src/gallium/drivers/softpipe/sp_quad_pipe.h index 5d4ecfdec3a..4ea9c0f4430 100644 --- a/src/gallium/drivers/softpipe/sp_quad_pipe.h +++ b/src/gallium/drivers/softpipe/sp_quad_pipe.h @@ -55,7 +55,6 @@ struct quad_stage { }; -struct quad_stage *sp_quad_polygon_stipple_stage( struct softpipe_context *softpipe ); struct quad_stage *sp_quad_earlyz_stage( struct softpipe_context *softpipe ); struct quad_stage *sp_quad_shade_stage( struct softpipe_context *softpipe ); struct quad_stage *sp_quad_alpha_test_stage( struct softpipe_context *softpipe ); diff --git a/src/gallium/drivers/softpipe/sp_quad_stipple.c b/src/gallium/drivers/softpipe/sp_quad_stipple.c deleted file mode 100644 index 4b29c2eb221..00000000000 --- a/src/gallium/drivers/softpipe/sp_quad_stipple.c +++ /dev/null @@ -1,81 +0,0 @@ - -/** - * quad polygon stipple stage - */ - -#include "sp_context.h" -#include "sp_quad.h" -#include "sp_quad_pipe.h" -#include "pipe/p_defines.h" -#include "util/u_memory.h" - - -/** - * Apply polygon stipple to quads produced by triangle rasterization - */ -static void -stipple_quad(struct quad_stage *qs, struct quad_header *quads[], unsigned nr) -{ - static const uint bit31 = 1u << 31; - static const uint bit30 = 1u << 30; - unsigned pass = nr; - - struct softpipe_context *softpipe = qs->softpipe; - unsigned q; - - pass = 0; - - for (q = 0; q < nr; q++) { - struct quad_header *quad = quads[q]; - - const int col0 = quad->input.x0 % 32; - const int y0 = quad->input.y0; - const int y1 = y0 + 1; - const uint stipple0 = softpipe->poly_stipple.stipple[y0 % 32]; - const uint stipple1 = softpipe->poly_stipple.stipple[y1 % 32]; - - /* turn off quad mask bits that fail the stipple test */ - if ((stipple0 & (bit31 >> col0)) == 0) - quad->inout.mask &= ~MASK_TOP_LEFT; - - if ((stipple0 & (bit30 >> col0)) == 0) - quad->inout.mask &= ~MASK_TOP_RIGHT; - - if ((stipple1 & (bit31 >> col0)) == 0) - quad->inout.mask &= ~MASK_BOTTOM_LEFT; - - if ((stipple1 & (bit30 >> col0)) == 0) - quad->inout.mask &= ~MASK_BOTTOM_RIGHT; - - if (quad->inout.mask) - quads[pass++] = quad; - } - - qs->next->run(qs->next, quads, pass); -} - - -static void stipple_begin(struct quad_stage *qs) -{ - qs->next->begin(qs->next); -} - - -static void stipple_destroy(struct quad_stage *qs) -{ - FREE( qs ); -} - - -struct quad_stage * -sp_quad_polygon_stipple_stage( struct softpipe_context *softpipe ) -{ - struct quad_stage *stage = CALLOC_STRUCT(quad_stage); - - stage->softpipe = softpipe; - stage->begin = stipple_begin; - stage->run = stipple_quad; - stage->destroy = stipple_destroy; - - return stage; -} diff --git a/src/gallium/drivers/softpipe/sp_state_derived.c b/src/gallium/drivers/softpipe/sp_state_derived.c index a5e97869f80..e7ee921c719 100644 --- a/src/gallium/drivers/softpipe/sp_state_derived.c +++ b/src/gallium/drivers/softpipe/sp_state_derived.c @@ -479,7 +479,6 @@ softpipe_update_derived(struct softpipe_context *softpipe, unsigned prim) if (softpipe->dirty & (SP_NEW_BLEND | SP_NEW_DEPTH_STENCIL_ALPHA | SP_NEW_FRAMEBUFFER | - SP_NEW_STIPPLE | SP_NEW_FS)) sp_build_quad_pipeline(softpipe); -- cgit v1.2.3