gallium: fix up drivers for edgeflag changes

several drivers which chose to ignore edgeflags might require some more work,
while edgeflags never worked there they might now crash.
This commit is contained in:
Roland Scheidegger 2009-12-19 00:18:43 +01:00
parent ff5b0c72db
commit 429f0e3b37
28 changed files with 22 additions and 162 deletions

View file

@ -171,21 +171,11 @@ cell_draw_arrays(struct pipe_context *pipe, unsigned mode,
}
static void
cell_set_edgeflags(struct pipe_context *pipe, const unsigned *edgeflags)
{
struct cell_context *cell = cell_context(pipe);
draw_set_edgeflags(cell->draw, edgeflags);
}
void
cell_init_draw_functions(struct cell_context *cell)
{
cell->pipe.draw_arrays = cell_draw_arrays;
cell->pipe.draw_elements = cell_draw_elements;
cell->pipe.draw_range_elements = cell_draw_range_elements;
cell->pipe.set_edgeflags = cell_set_edgeflags;
}

View file

@ -752,16 +752,9 @@ static void i915_set_vertex_elements(struct pipe_context *pipe,
}
static void i915_set_edgeflags(struct pipe_context *pipe,
const unsigned *bitfield)
{
/* TODO do something here */
}
void
i915_init_state_functions( struct i915_context *i915 )
{
i915->base.set_edgeflags = i915_set_edgeflags;
i915->base.create_blend_state = i915_create_blend_state;
i915->base.bind_blend_state = i915_bind_blend_state;
i915->base.delete_blend_state = i915_delete_blend_state;

View file

@ -45,17 +45,6 @@ identity_destroy(struct pipe_context *_pipe)
free(id_pipe);
}
static void
identity_set_edgeflags(struct pipe_context *_pipe,
const unsigned *bitfield)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct pipe_context *pipe = id_pipe->pipe;
pipe->set_edgeflags(pipe,
bitfield);
}
static boolean
identity_draw_arrays(struct pipe_context *_pipe,
unsigned prim,
@ -707,7 +696,6 @@ identity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe)
id_pipe->base.draw = NULL;
id_pipe->base.destroy = identity_destroy;
id_pipe->base.set_edgeflags = identity_set_edgeflags;
id_pipe->base.draw_arrays = identity_draw_arrays;
id_pipe->base.draw_elements = identity_draw_elements;
id_pipe->base.draw_range_elements = identity_draw_range_elements;

View file

@ -226,8 +226,6 @@ llvmpipe_create( struct pipe_screen *screen )
llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
llvmpipe->pipe.set_edgeflags = llvmpipe_set_edgeflags;
llvmpipe->pipe.clear = llvmpipe_clear;
llvmpipe->pipe.flush = llvmpipe_flush;

View file

@ -133,10 +133,3 @@ llvmpipe_draw_elements(struct pipe_context *pipe,
mode, start, count );
}
void
llvmpipe_set_edgeflags(struct pipe_context *pipe, const unsigned *edgeflags)
{
struct llvmpipe_context *lp = llvmpipe_context(pipe);
draw_set_edgeflags(lp->draw, edgeflags);
}

View file

@ -212,10 +212,6 @@ llvmpipe_draw_range_elements(struct pipe_context *pipe,
unsigned max_index,
unsigned mode, unsigned start, unsigned count);
void
llvmpipe_set_edgeflags(struct pipe_context *pipe, const unsigned *edgeflags);
void
llvmpipe_map_transfers(struct llvmpipe_context *lp);

View file

@ -27,11 +27,6 @@ nv04_destroy(struct pipe_context *pipe)
FREE(nv04);
}
static void
nv04_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
}
static boolean
nv04_init_hwctx(struct nv04_context *nv04)
{
@ -83,7 +78,6 @@ nv04_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv04->pipe.winsys = ws;
nv04->pipe.screen = pscreen;
nv04->pipe.destroy = nv04_destroy;
nv04->pipe.set_edgeflags = nv04_set_edgeflags;
nv04->pipe.draw_arrays = nv04_draw_arrays;
nv04->pipe.draw_elements = nv04_draw_elements;
nv04->pipe.clear = nv04_clear;

View file

@ -252,11 +252,6 @@ static void nv10_init_hwctx(struct nv10_context *nv10)
FIRE_RING (NULL);
}
static void
nv10_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
}
struct pipe_context *
nv10_create(struct pipe_screen *pscreen, unsigned pctx_id)
{
@ -276,7 +271,6 @@ nv10_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv10->pipe.winsys = ws;
nv10->pipe.screen = pscreen;
nv10->pipe.destroy = nv10_destroy;
nv10->pipe.set_edgeflags = nv10_set_edgeflags;
nv10->pipe.draw_arrays = nv10_draw_arrays;
nv10->pipe.draw_elements = nv10_draw_elements;
nv10->pipe.clear = nv10_clear;

View file

@ -375,11 +375,6 @@ static void nv20_init_hwctx(struct nv20_context *nv20)
FIRE_RING (NULL);
}
static void
nv20_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
}
struct pipe_context *
nv20_create(struct pipe_screen *pscreen, unsigned pctx_id)
{
@ -399,7 +394,6 @@ nv20_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv20->pipe.winsys = ws;
nv20->pipe.screen = pscreen;
nv20->pipe.destroy = nv20_destroy;
nv20->pipe.set_edgeflags = nv20_set_edgeflags;
nv20->pipe.draw_arrays = nv20_draw_arrays;
nv20->pipe.draw_elements = nv20_draw_elements;
nv20->pipe.clear = nv20_clear;

View file

@ -530,6 +530,9 @@ nv20_vertprog_parse_decl_output(struct nv20_vpc *vpc,
return FALSE;
}
break;
case TGSI_SEMANTIC_EDGEFLAG:
NOUVEAU_ERR("cannot handle edgeflag output\n");
return FALSE;
default:
NOUVEAU_ERR("bad output semantic\n");
return FALSE;

View file

@ -144,7 +144,6 @@ struct nv30_context {
unsigned vtxbuf_nr;
struct pipe_vertex_element vtxelt[PIPE_MAX_ATTRIBS];
unsigned vtxelt_nr;
const unsigned *edgeflags;
};
static INLINE struct nv30_context *

View file

@ -672,16 +672,6 @@ nv30_set_vertex_elements(struct pipe_context *pipe, unsigned count,
/*nv30->draw_dirty |= NV30_NEW_ARRAYS;*/
}
static void
nv30_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
struct nv30_context *nv30 = nv30_context(pipe);
nv30->edgeflags = bitfield;
nv30->dirty |= NV30_NEW_ARRAYS;
/*nv30->draw_dirty |= NV30_NEW_ARRAYS;*/
}
void
nv30_init_state_functions(struct nv30_context *nv30)
{
@ -721,7 +711,6 @@ nv30_init_state_functions(struct nv30_context *nv30)
nv30->pipe.set_scissor_state = nv30_set_scissor_state;
nv30->pipe.set_viewport_state = nv30_set_viewport_state;
nv30->pipe.set_edgeflags = nv30_set_edgeflags;
nv30->pipe.set_vertex_buffers = nv30_set_vertex_buffers;
nv30->pipe.set_vertex_elements = nv30_set_vertex_elements;
}

View file

@ -485,11 +485,6 @@ nv30_vbo_validate(struct nv30_context *nv30)
unsigned vb_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_GART | NOUVEAU_BO_RD;
int hw;
if (nv30->edgeflags) {
/*nv30->fallback_swtnl |= NV30_NEW_ARRAYS;*/
return FALSE;
}
vtxbuf = so_new(20, 18);
so_method(vtxbuf, rankine, NV34TCL_VTXBUF_ADDRESS(0), nv30->vtxelt_nr);
vtxfmt = so_new(17, 0);

View file

@ -530,6 +530,9 @@ nv30_vertprog_parse_decl_output(struct nv30_vpc *vpc,
return FALSE;
}
break;
case TGSI_SEMANTIC_EDGEFLAG:
NOUVEAU_ERR("cannot handle edgeflag output\n");
return FALSE;
default:
NOUVEAU_ERR("bad output semantic\n");
return FALSE;

View file

@ -159,7 +159,6 @@ struct nv40_context {
unsigned vtxbuf_nr;
struct pipe_vertex_element vtxelt[PIPE_MAX_ATTRIBS];
unsigned vtxelt_nr;
const unsigned *edgeflags;
};
static INLINE struct nv40_context *

View file

@ -687,16 +687,6 @@ nv40_set_vertex_elements(struct pipe_context *pipe, unsigned count,
nv40->draw_dirty |= NV40_NEW_ARRAYS;
}
static void
nv40_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
struct nv40_context *nv40 = nv40_context(pipe);
nv40->edgeflags = bitfield;
nv40->dirty |= NV40_NEW_ARRAYS;
nv40->draw_dirty |= NV40_NEW_ARRAYS;
}
void
nv40_init_state_functions(struct nv40_context *nv40)
{
@ -736,7 +726,6 @@ nv40_init_state_functions(struct nv40_context *nv40)
nv40->pipe.set_scissor_state = nv40_set_scissor_state;
nv40->pipe.set_viewport_state = nv40_set_viewport_state;
nv40->pipe.set_edgeflags = nv40_set_edgeflags;
nv40->pipe.set_vertex_buffers = nv40_set_vertex_buffers;
nv40->pipe.set_vertex_elements = nv40_set_vertex_elements;
}

View file

@ -160,7 +160,6 @@ nv40_state_validate_swtnl(struct nv40_context *nv40)
draw_set_viewport_state(draw, &nv40->viewport);
if (nv40->draw_dirty & NV40_NEW_ARRAYS) {
draw_set_edgeflags(draw, nv40->edgeflags);
draw_set_vertex_buffers(draw, nv40->vtxbuf_nr, nv40->vtxbuf);
draw_set_vertex_elements(draw, nv40->vtxelt_nr, nv40->vtxelt);
}

View file

@ -484,11 +484,6 @@ nv40_vbo_validate(struct nv40_context *nv40)
unsigned vb_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_GART | NOUVEAU_BO_RD;
int hw;
if (nv40->edgeflags) {
nv40->fallback_swtnl |= NV40_NEW_ARRAYS;
return FALSE;
}
vtxbuf = so_new(20, 18);
so_method(vtxbuf, curie, NV40TCL_VTXBUF_ADDRESS(0), nv40->vtxelt_nr);
vtxfmt = so_new(17, 0);

View file

@ -621,6 +621,10 @@ nv40_vertprog_parse_decl_output(struct nv40_vpc *vpc,
return FALSE;
}
break;
case TGSI_SEMANTIC_EDGEFLAG:
/* not really an error just a fallback */
NOUVEAU_ERR("cannot handle edgeflag output\n");
return FALSE;
default:
NOUVEAU_ERR("bad output semantic\n");
return FALSE;

View file

@ -48,11 +48,6 @@ nv50_destroy(struct pipe_context *pipe)
}
static void
nv50_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
{
}
struct pipe_context *
nv50_create(struct pipe_screen *pscreen, unsigned pctx_id)
{
@ -71,7 +66,6 @@ nv50_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv50->pipe.destroy = nv50_destroy;
nv50->pipe.set_edgeflags = nv50_set_edgeflags;
nv50->pipe.draw_arrays = nv50_draw_arrays;
nv50->pipe.draw_elements = nv50_draw_elements;
nv50->pipe.clear = nv50_clear;

View file

@ -283,13 +283,6 @@ static void r300_delete_dsa_state(struct pipe_context* pipe,
FREE(state);
}
static void r300_set_edgeflags(struct pipe_context* pipe,
const unsigned* bitfield)
{
/* XXX you know it's bad when i915 has this blank too */
/* XXX and even worse, I have no idea WTF the bitfield is */
}
static void r300_set_scissor_regs(const struct pipe_scissor_state* state,
struct r300_scissor_regs *scissor,
boolean is_r500)
@ -840,8 +833,6 @@ void r300_init_state_functions(struct r300_context* r300)
r300->context.bind_depth_stencil_alpha_state = r300_bind_dsa_state;
r300->context.delete_depth_stencil_alpha_state = r300_delete_dsa_state;
r300->context.set_edgeflags = r300_set_edgeflags;
r300->context.set_framebuffer_state = r300_set_framebuffer_state;
r300->context.create_fs_state = r300_create_fs_state;

View file

@ -77,6 +77,11 @@ static void r300_shader_read_vs_outputs(
vs_outputs->fog = i;
break;
case TGSI_SEMANTIC_EDGEFLAG:
assert(index == 0);
fprintf(stderr, "r300 VP: cannot handle edgeflag output\n");
assert(0);
break;
default:
assert(0);
}

View file

@ -202,8 +202,6 @@ struct svga_state
struct pipe_clip_state clip;
struct pipe_viewport_state viewport;
const unsigned *edgeflags;
unsigned num_samplers;
unsigned num_textures;
unsigned num_vertex_elements;
@ -380,9 +378,8 @@ struct svga_context
#define SVGA_NEW_NEED_SWTNL 0x400000
#define SVGA_NEW_FS_RESULT 0x800000
#define SVGA_NEW_VS_RESULT 0x1000000
#define SVGA_NEW_EDGEFLAGS 0x2000000
#define SVGA_NEW_ZERO_STRIDE 0x4000000
#define SVGA_NEW_TEXTURE_FLAGS 0x8000000
#define SVGA_NEW_ZERO_STRIDE 0x2000000
#define SVGA_NEW_TEXTURE_FLAGS 0x4000000

View file

@ -84,18 +84,6 @@ static void svga_set_vertex_elements(struct pipe_context *pipe,
}
static void svga_set_edgeflags(struct pipe_context *pipe,
const unsigned *bitfield)
{
struct svga_context *svga = svga_context(pipe);
if (bitfield != NULL || svga->curr.edgeflags != NULL) {
svga->curr.edgeflags = bitfield;
svga->dirty |= SVGA_NEW_EDGEFLAGS;
}
}
void svga_cleanup_vertex_state( struct svga_context *svga )
{
unsigned i;
@ -109,7 +97,6 @@ void svga_init_vertex_functions( struct svga_context *svga )
{
svga->pipe.set_vertex_buffers = svga_set_vertex_buffers;
svga->pipe.set_vertex_elements = svga_set_vertex_elements;
svga->pipe.set_edgeflags = svga_set_edgeflags;
}

View file

@ -108,6 +108,7 @@ static int update_need_pipeline( struct svga_context *svga,
{
boolean need_pipeline = FALSE;
struct svga_vertex_shader *vs = svga->curr.vs;
/* SVGA_NEW_RAST, SVGA_NEW_REDUCED_PRIMITIVE
*/
@ -119,11 +120,9 @@ static int update_need_pipeline( struct svga_context *svga,
need_pipeline = TRUE;
}
/* SVGA_NEW_EDGEFLAGS
/* EDGEFLAGS
*/
if (svga->curr.rast->hw_unfilled != PIPE_POLYGON_MODE_FILL &&
svga->curr.reduced_prim == PIPE_PRIM_TRIANGLES &&
svga->curr.edgeflags != NULL) {
if (vs->base.info.writes_edgeflag) {
SVGA_DBG(DEBUG_SWTNL, "%s: edgeflags\n", __FUNCTION__);
need_pipeline = TRUE;
}
@ -150,6 +149,7 @@ struct svga_tracked_state svga_update_need_pipeline =
"need pipeline",
(SVGA_NEW_RAST |
SVGA_NEW_CLIP |
SVGA_NEW_VS |
SVGA_NEW_REDUCED_PRIMITIVE),
update_need_pipeline
};

View file

@ -120,10 +120,6 @@ static int update_swtnl_draw( struct svga_context *svga,
draw_set_mrd(svga->swtnl.draw,
svga->curr.depthscale);
if (dirty & SVGA_NEW_EDGEFLAGS)
draw_set_edgeflags( svga->swtnl.draw,
svga->curr.edgeflags );
return 0;
}
@ -138,8 +134,7 @@ struct svga_tracked_state svga_update_swtnl_draw =
SVGA_NEW_VIEWPORT |
SVGA_NEW_RAST |
SVGA_NEW_FRAME_BUFFER |
SVGA_NEW_REDUCED_PRIMITIVE |
SVGA_NEW_EDGEFLAGS),
SVGA_NEW_REDUCED_PRIMITIVE),
update_swtnl_draw
};

View file

@ -94,25 +94,6 @@ trace_surface_unwrap(struct trace_context *tr_ctx,
}
static INLINE void
trace_context_set_edgeflags(struct pipe_context *_pipe,
const unsigned *bitfield)
{
struct trace_context *tr_ctx = trace_context(_pipe);
struct pipe_context *pipe = tr_ctx->pipe;
trace_dump_call_begin("pipe_context", "set_edgeflags");
trace_dump_arg(ptr, pipe);
/* FIXME: we don't know how big this array is */
trace_dump_arg(ptr, bitfield);
pipe->set_edgeflags(pipe, bitfield);
trace_dump_call_end();
}
static INLINE void
trace_context_draw_block(struct trace_context *tr_ctx, int flag)
{
@ -1298,7 +1279,6 @@ trace_context_create(struct pipe_screen *_screen,
tr_ctx->base.winsys = _screen->winsys;
tr_ctx->base.screen = _screen;
tr_ctx->base.destroy = trace_context_destroy;
tr_ctx->base.set_edgeflags = trace_context_set_edgeflags;
tr_ctx->base.draw_arrays = trace_context_draw_arrays;
tr_ctx->base.draw_elements = trace_context_draw_elements;
tr_ctx->base.draw_range_elements = trace_context_draw_range_elements;

View file

@ -507,10 +507,6 @@ class Context(Object):
self.real.set_vertex_element(i, elements[i])
self.real.set_vertex_elements(num_elements)
def set_edgeflags(self, bitfield):
# FIXME
pass
def dump_vertices(self, start, count):
if not self.interpreter.verbosity(2):
return