mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
clean up cache flush emission into one place
makes gears work with swtcl
This commit is contained in:
parent
41d28d97f5
commit
0f7f6e4e95
5 changed files with 25 additions and 40 deletions
|
|
@ -532,3 +532,19 @@ void r300ReleaseArrays(GLcontext * ctx)
|
|||
r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], __FUNCTION__);
|
||||
}
|
||||
}
|
||||
|
||||
void r300EmitCacheFlush(r300ContextPtr rmesa)
|
||||
{
|
||||
int cmd_reserved = 0;
|
||||
int cmd_written = 0;
|
||||
|
||||
drm_radeon_cmd_header_t *cmd = NULL;
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,4 +228,5 @@ extern void r300ReleaseArrays(GLcontext * ctx);
|
|||
extern int r300PrimitiveType(r300ContextPtr rmesa, int prim);
|
||||
extern int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim);
|
||||
|
||||
extern void r300EmitCacheFlush(r300ContextPtr rmesa);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -172,11 +172,7 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer)
|
|||
cmd2[7].u = r300PackFloat32(ctx->Color.ClearColor[2]);
|
||||
cmd2[8].u = r300PackFloat32(ctx->Color.ClearColor[3]);
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
r300EmitCacheFlush(rmesa);
|
||||
cp_wait(rmesa, R300_WAIT_3D | R300_WAIT_3D_CLEAN);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -287,9 +287,6 @@ static GLboolean r300RunRender(GLcontext * ctx,
|
|||
{
|
||||
r300ContextPtr rmesa = R300_CONTEXT(ctx);
|
||||
int i;
|
||||
int cmd_reserved = 0;
|
||||
int cmd_written = 0;
|
||||
drm_radeon_cmd_header_t *cmd = NULL;
|
||||
TNLcontext *tnl = TNL_CONTEXT(ctx);
|
||||
struct vertex_buffer *vb = &tnl->vb;
|
||||
|
||||
|
|
@ -303,12 +300,7 @@ static GLboolean r300RunRender(GLcontext * ctx,
|
|||
|
||||
r300UpdateShaderStates(rmesa);
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
|
||||
r300EmitCacheFlush(rmesa);
|
||||
r300EmitState(rmesa);
|
||||
|
||||
for (i = 0; i < vb->PrimitiveCount; i++) {
|
||||
|
|
@ -318,11 +310,7 @@ static GLboolean r300RunRender(GLcontext * ctx,
|
|||
r300RunRenderPrimitive(rmesa, ctx, start, end, prim);
|
||||
}
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
r300EmitCacheFlush(rmesa);
|
||||
|
||||
#ifdef USER_BUFFERS
|
||||
r300UseArrays(ctx);
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@ static void flush_last_swtcl_prim( r300ContextPtr rmesa )
|
|||
|
||||
if (rmesa->dma.current.start != rmesa->dma.current.ptr) {
|
||||
|
||||
r300EnsureCmdBufSpace( rmesa, rmesa->hw.max_state_size + (8*sizeof(int)), __FUNCTION__);
|
||||
r300EnsureCmdBufSpace( rmesa, rmesa->hw.max_state_size + (12*sizeof(int)), __FUNCTION__);
|
||||
r300EmitVertexAOS( rmesa,
|
||||
rmesa->swtcl.vertex_size,
|
||||
current_offset);
|
||||
|
|
@ -378,6 +378,8 @@ static void flush_last_swtcl_prim( r300ContextPtr rmesa )
|
|||
r300EmitVbufPrim( rmesa,
|
||||
rmesa->swtcl.hw_primitive,
|
||||
rmesa->swtcl.numverts);
|
||||
|
||||
r300EmitCacheFlush(rmesa);
|
||||
}
|
||||
|
||||
rmesa->swtcl.numverts = 0;
|
||||
|
|
@ -679,11 +681,7 @@ static void r300ChooseRenderState( GLcontext *ctx )
|
|||
|
||||
static void r300RenderStart(GLcontext *ctx)
|
||||
{
|
||||
r300ContextPtr rmesa = R300_CONTEXT( ctx );
|
||||
int cmd_reserved = 0;
|
||||
int cmd_written = 0;
|
||||
drm_radeon_cmd_header_t *cmd = NULL;
|
||||
|
||||
r300ContextPtr rmesa = R300_CONTEXT( ctx );
|
||||
// fprintf(stderr, "%s\n", __FUNCTION__);
|
||||
|
||||
r300ChooseRenderState(ctx);
|
||||
|
|
@ -691,11 +689,7 @@ static void r300RenderStart(GLcontext *ctx)
|
|||
|
||||
r300UpdateShaderStates(rmesa);
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
r300EmitCacheFlush(rmesa);
|
||||
|
||||
if (rmesa->dma.flush != 0 &&
|
||||
rmesa->dma.flush != flush_last_swtcl_prim)
|
||||
|
|
@ -705,16 +699,6 @@ static void r300RenderStart(GLcontext *ctx)
|
|||
|
||||
static void r300RenderFinish(GLcontext *ctx)
|
||||
{
|
||||
r300ContextPtr rmesa = R300_CONTEXT( ctx );
|
||||
int cmd_reserved = 0;
|
||||
int cmd_written = 0;
|
||||
drm_radeon_cmd_header_t *cmd = NULL;
|
||||
|
||||
reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_DSTCACHE_UNKNOWN_0A);
|
||||
|
||||
reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0);
|
||||
e32(R300_RB3D_ZCACHE_UNKNOWN_03);
|
||||
}
|
||||
|
||||
static void r300RasterPrimitive( GLcontext *ctx, GLuint hwprim )
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue