소스 검색

Eliminate some more code

tags/embedded-1-20030224
Keith Whitwell 23 년 전
부모
커밋
cfe59bd3f9
1개의 변경된 파일20개의 추가작업 그리고 64개의 파일을 삭제
  1. 20
    64
      src/mesa/drivers/dri/radeon/radeon_subset_vtx.c

+ 20
- 64
src/mesa/drivers/dri/radeon/radeon_subset_vtx.c 파일 보기

@@ -65,9 +65,6 @@ static struct {
void (*notify)( void );
} stack[2];

/* Vertex size
*/
GLint vertex_size;

/* Storage for current vertex:
*/
@@ -90,41 +87,13 @@ static struct {
/* Active prim (may differ from ctx->Driver.CurrentExecPrimitive)
*/
GLenum prim;

GLuint vertex_format;
GLint vertex_size;
GLboolean recheck;
} vb;

static void radeonFlushVertices( GLcontext *, GLuint );




void radeonTclPrimitive( GLcontext *ctx,
GLenum prim,
int hw_prim )
{
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
GLuint se_cntl;
GLuint newprim = hw_prim | rmesa->tcl.tcl_flag;

RADEON_NEWPRIM( rmesa );
rmesa->tcl.hw_primitive = newprim;

se_cntl = rmesa->hw.set.cmd[SET_SE_CNTL];
se_cntl &= ~RADEON_FLAT_SHADE_VTX_LAST;

if (prim == GL_POLYGON && (ctx->_TriangleCaps & DD_FLATSHADE))
se_cntl |= RADEON_FLAT_SHADE_VTX_0;
else
se_cntl |= RADEON_FLAT_SHADE_VTX_LAST;

if (se_cntl != rmesa->hw.set.cmd[SET_SE_CNTL]) {
RADEON_STATECHANGE( rmesa, set );
rmesa->hw.set.cmd[SET_SE_CNTL] = se_cntl;
}
}

static void radeonFlushVertices( GLcontext *, GLuint );


static struct { int start, incr, hwprim; } prims[GL_POLYGON+1] = {
@@ -142,47 +111,26 @@ static struct { int start, incr, hwprim; } prims[GL_POLYGON+1] = {

static void finish_prim( radeonContextPtr rmesa )
{
GLcontext *ctx = vb.context;
struct radeon_dma_region tmp = rmesa->dma.current; /* structure copy */
GLuint prim = vb.prim;
GLuint prim_end = (vb.stack[0].initial_vertspace - vb.stack[0].vertspace);
GLuint prim_end = vb.stack[0].initial_vertspace - vb.stack[0].vertspace;
/* Too few vertices (eg: 2 vertices for a triangles prim?)
*/
if (prim_end < prims[prim].start)
if (prim_end < prims[vb.prim].start)
return;

/* Drop redundant vertices off end of primitive. (eg: 5 vertices
* for triangles prim?)
*/
prim_end -= (prim_end - prims[prim].start) % prims[prim].incr;
prim_end -= (prim_end - prims[vb.prim].start) % prims[vb.prim].incr;

tmp.buf->refcount++;
tmp.aos_size = vb.vertex_size;
tmp.aos_stride = vb.vertex_size;
tmp.aos_start = GET_START(&tmp);
radeonEmitVertexAOS( rmesa, vb.vertex_size, GET_START(&rmesa->dma.current) );

rmesa->dma.current.ptr = rmesa->dma.current.start +=
(vb.stack[0].initial_vertspace - vb.stack[0].vertspace)*vb.vertex_size*4;

rmesa->tcl.vertex_format = vb.vertex_format;
rmesa->tcl.aos_components[0] = &tmp;
rmesa->tcl.nr_aos_components = 1;
rmesa->dma.flush = 0;

radeonTclPrimitive( ctx, prim, prims[prim].hwprim );
radeonEmitAOS( rmesa,
rmesa->tcl.aos_components,
rmesa->tcl.nr_aos_components,
0 );
radeonEmitVbufPrim( rmesa,
rmesa->tcl.vertex_format,
rmesa->tcl.hw_primitive,
radeonEmitVbufPrim( rmesa, vb.vertex_format,
prims[vb.prim].hwprim | rmesa->tcl.tcl_flag,
prim_end );

radeonReleaseDmaRegion( rmesa, &tmp, __FUNCTION__ );
rmesa->dma.current.ptr =
rmesa->dma.current.start += prim_end * vb.vertex_size * 4;
}


@@ -451,6 +399,7 @@ static void radeon_Begin( GLenum mode )
{
GLcontext *ctx = vb.context;
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
GLuint se_cntl;
if (mode > GL_POLYGON) {
_mesa_error( ctx, GL_INVALID_ENUM, "glBegin" );
@@ -471,7 +420,6 @@ static void radeon_Begin( GLenum mode )
if (vb.recheck)
radeonVtxfmtValidate( ctx );


/* Do we need to grab a new dma region for the vertices?
*/
if (rmesa->dma.current.ptr + 12*vb.vertex_size*4 > rmesa->dma.current.end) {
@@ -480,8 +428,8 @@ static void radeon_Begin( GLenum mode )
}

reset_notify();

vb.prim = ctx->Driver.CurrentExecPrimitive = mode;
se_cntl = rmesa->hw.set.cmd[SET_SE_CNTL] | RADEON_FLAT_SHADE_VTX_LAST;

switch( mode ) {
case GL_QUADS:
@@ -513,9 +461,17 @@ static void radeon_Begin( GLenum mode )
if (ctx->Line.StippleFlag)
RESET_STIPPLE();
break;
case GL_POLYGON:
if (ctx->_TriangleCaps & DD_FLATSHADE)
se_cntl &= ~RADEON_FLAT_SHADE_VTX_LAST;
default:
break;
}

if (se_cntl != rmesa->hw.set.cmd[SET_SE_CNTL]) {
RADEON_STATECHANGE( rmesa, set );
rmesa->hw.set.cmd[SET_SE_CNTL] = se_cntl;
}
}



Loading…
취소
저장