gallium: remove the ugly pipe->draw stage lookup code in aaline/point/pstipple stages
Added a void *draw ptr to pipe_context. Probably look for a better solution someday.
This commit is contained in:
@@ -691,35 +691,11 @@ draw_aaline_stage(struct draw_context *draw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX temporary? solution to mapping a pipe_context to a aaline_stage.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_CONTEXTS 10
|
|
||||||
|
|
||||||
static struct pipe_context *Pipe[MAX_CONTEXTS];
|
|
||||||
static struct aaline_stage *Stage[MAX_CONTEXTS];
|
|
||||||
static uint NumContexts;
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_aa_pipe_context(struct pipe_context *pipe, struct aaline_stage *aa)
|
|
||||||
{
|
|
||||||
assert(NumContexts < MAX_CONTEXTS);
|
|
||||||
Pipe[NumContexts] = pipe;
|
|
||||||
Stage[NumContexts] = aa;
|
|
||||||
NumContexts++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct aaline_stage *
|
static struct aaline_stage *
|
||||||
aaline_stage_from_pipe(struct pipe_context *pipe)
|
aaline_stage_from_pipe(struct pipe_context *pipe)
|
||||||
{
|
{
|
||||||
uint i;
|
struct draw_context *draw = (struct draw_context *) pipe->draw;
|
||||||
for (i = 0; i < NumContexts; i++) {
|
return aaline_stage(draw->pipeline.aaline);
|
||||||
if (Pipe[i] == pipe)
|
|
||||||
return Stage[i];
|
|
||||||
}
|
|
||||||
assert(0);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -802,6 +778,8 @@ draw_install_aaline_stage(struct draw_context *draw, struct pipe_context *pipe)
|
|||||||
{
|
{
|
||||||
struct aaline_stage *aaline;
|
struct aaline_stage *aaline;
|
||||||
|
|
||||||
|
pipe->draw = (void *) draw;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create / install AA line drawing / prim stage
|
* Create / install AA line drawing / prim stage
|
||||||
*/
|
*/
|
||||||
@@ -830,6 +808,4 @@ draw_install_aaline_stage(struct draw_context *draw, struct pipe_context *pipe)
|
|||||||
|
|
||||||
pipe->bind_sampler_state = aaline_bind_sampler_state;
|
pipe->bind_sampler_state = aaline_bind_sampler_state;
|
||||||
pipe->set_sampler_texture = aaline_set_sampler_texture;
|
pipe->set_sampler_texture = aaline_set_sampler_texture;
|
||||||
|
|
||||||
add_aa_pipe_context(pipe, aaline);
|
|
||||||
}
|
}
|
||||||
|
@@ -762,35 +762,11 @@ draw_aapoint_stage(struct draw_context *draw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX temporary? solution to mapping a pipe_context to a aapoint_stage.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_CONTEXTS 10
|
|
||||||
|
|
||||||
static struct pipe_context *Pipe[MAX_CONTEXTS];
|
|
||||||
static struct aapoint_stage *Stage[MAX_CONTEXTS];
|
|
||||||
static uint NumContexts;
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_aa_pipe_context(struct pipe_context *pipe, struct aapoint_stage *aa)
|
|
||||||
{
|
|
||||||
assert(NumContexts < MAX_CONTEXTS);
|
|
||||||
Pipe[NumContexts] = pipe;
|
|
||||||
Stage[NumContexts] = aa;
|
|
||||||
NumContexts++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct aapoint_stage *
|
static struct aapoint_stage *
|
||||||
aapoint_stage_from_pipe(struct pipe_context *pipe)
|
aapoint_stage_from_pipe(struct pipe_context *pipe)
|
||||||
{
|
{
|
||||||
uint i;
|
struct draw_context *draw = (struct draw_context *) pipe->draw;
|
||||||
for (i = 0; i < NumContexts; i++) {
|
return aapoint_stage(draw->pipeline.aapoint);
|
||||||
if (Pipe[i] == pipe)
|
|
||||||
return Stage[i];
|
|
||||||
}
|
|
||||||
assert(0);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -850,6 +826,8 @@ draw_install_aapoint_stage(struct draw_context *draw,
|
|||||||
{
|
{
|
||||||
struct aapoint_stage *aapoint;
|
struct aapoint_stage *aapoint;
|
||||||
|
|
||||||
|
pipe->draw = (void *) draw;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create / install AA point drawing / prim stage
|
* Create / install AA point drawing / prim stage
|
||||||
*/
|
*/
|
||||||
@@ -868,6 +846,4 @@ draw_install_aapoint_stage(struct draw_context *draw,
|
|||||||
pipe->create_fs_state = aapoint_create_fs_state;
|
pipe->create_fs_state = aapoint_create_fs_state;
|
||||||
pipe->bind_fs_state = aapoint_bind_fs_state;
|
pipe->bind_fs_state = aapoint_bind_fs_state;
|
||||||
pipe->delete_fs_state = aapoint_delete_fs_state;
|
pipe->delete_fs_state = aapoint_delete_fs_state;
|
||||||
|
|
||||||
add_aa_pipe_context(pipe, aapoint);
|
|
||||||
}
|
}
|
||||||
|
@@ -559,35 +559,11 @@ draw_pstip_stage(struct draw_context *draw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX temporary? solution to mapping a pipe_context to a pstip_stage.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_CONTEXTS 10
|
|
||||||
|
|
||||||
static struct pipe_context *Pipe[MAX_CONTEXTS];
|
|
||||||
static struct pstip_stage *Stage[MAX_CONTEXTS];
|
|
||||||
static uint NumContexts;
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_pstip_pipe_context(struct pipe_context *pipe, struct pstip_stage *pstip)
|
|
||||||
{
|
|
||||||
assert(NumContexts < MAX_CONTEXTS);
|
|
||||||
Pipe[NumContexts] = pipe;
|
|
||||||
Stage[NumContexts] = pstip;
|
|
||||||
NumContexts++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct pstip_stage *
|
static struct pstip_stage *
|
||||||
pstip_stage_from_pipe(struct pipe_context *pipe)
|
pstip_stage_from_pipe(struct pipe_context *pipe)
|
||||||
{
|
{
|
||||||
uint i;
|
struct draw_context *draw = (struct draw_context *) pipe->draw;
|
||||||
for (i = 0; i < NumContexts; i++) {
|
return pstip_stage(draw->pipeline.pstipple);
|
||||||
if (Pipe[i] == pipe)
|
|
||||||
return Stage[i];
|
|
||||||
}
|
|
||||||
assert(0);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -686,6 +662,8 @@ draw_install_pstipple_stage(struct draw_context *draw,
|
|||||||
{
|
{
|
||||||
struct pstip_stage *pstip;
|
struct pstip_stage *pstip;
|
||||||
|
|
||||||
|
pipe->draw = (void *) draw;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create / install AA line drawing / prim stage
|
* Create / install AA line drawing / prim stage
|
||||||
*/
|
*/
|
||||||
@@ -716,6 +694,4 @@ draw_install_pstipple_stage(struct draw_context *draw,
|
|||||||
pipe->bind_sampler_state = pstip_bind_sampler_state;
|
pipe->bind_sampler_state = pstip_bind_sampler_state;
|
||||||
pipe->set_sampler_texture = pstip_set_sampler_texture;
|
pipe->set_sampler_texture = pstip_set_sampler_texture;
|
||||||
pipe->set_polygon_stipple = pstip_set_polygon_stipple;
|
pipe->set_polygon_stipple = pstip_set_polygon_stipple;
|
||||||
|
|
||||||
add_pstip_pipe_context(pipe, pstip);
|
|
||||||
}
|
}
|
||||||
|
@@ -56,6 +56,7 @@ struct pipe_context {
|
|||||||
struct pipe_screen *screen;
|
struct pipe_screen *screen;
|
||||||
|
|
||||||
void *priv; /** context private data (for DRI for example) */
|
void *priv; /** context private data (for DRI for example) */
|
||||||
|
void *draw; /** private, for draw module (temporary? */
|
||||||
|
|
||||||
void (*destroy)( struct pipe_context * );
|
void (*destroy)( struct pipe_context * );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user