mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 14:20:11 +01:00
r300: VAP flush is needed only when vertex program or constants are changed
This commit is contained in:
parent
77ed4d1f5d
commit
2872c1cc32
4 changed files with 2 additions and 25 deletions
|
|
@ -90,8 +90,7 @@ void r300_emit_vpu(struct r300_context *r300,
|
|||
{
|
||||
BATCH_LOCALS(&r300->radeon);
|
||||
|
||||
BEGIN_BATCH_NO_AUTOSTATE(5 + len);
|
||||
OUT_BATCH_REGVAL(R300_VAP_PVS_STATE_FLUSH_REG, 0);
|
||||
BEGIN_BATCH_NO_AUTOSTATE(3 + len);
|
||||
OUT_BATCH_REGVAL(R300_VAP_PVS_VECTOR_INDX_REG, addr);
|
||||
OUT_BATCH(CP_PACKET0(R300_VAP_PVS_UPLOAD_DATA, len-1) | RADEON_ONE_REG_WR);
|
||||
OUT_BATCH_TABLE(data, len);
|
||||
|
|
@ -778,24 +777,6 @@ void r300InitCmdBuf(r300ContextPtr r300)
|
|||
/* VPU only on TCL */
|
||||
if (has_tcl) {
|
||||
int i;
|
||||
if (r300->radeon.radeonScreen->kernel_mm) {
|
||||
ALLOC_STATE(vap_flush, always, 10, 0);
|
||||
/* flush processing vertices */
|
||||
r300->hw.vap_flush.cmd[0] = cmdpacket0(r300->radeon.radeonScreen, R300_SC_SCREENDOOR, 1);
|
||||
r300->hw.vap_flush.cmd[1] = 0;
|
||||
r300->hw.vap_flush.cmd[2] = cmdpacket0(r300->radeon.radeonScreen, R300_RB3D_DSTCACHE_CTLSTAT, 1);
|
||||
r300->hw.vap_flush.cmd[3] = R300_RB3D_DSTCACHE_CTLSTAT_DC_FLUSH_FLUSH_DIRTY_3D;
|
||||
r300->hw.vap_flush.cmd[4] = cmdpacket0(r300->radeon.radeonScreen, RADEON_WAIT_UNTIL, 1);
|
||||
r300->hw.vap_flush.cmd[5] = RADEON_WAIT_3D_IDLECLEAN;
|
||||
r300->hw.vap_flush.cmd[6] = cmdpacket0(r300->radeon.radeonScreen, R300_SC_SCREENDOOR, 1);
|
||||
r300->hw.vap_flush.cmd[7] = 0xffffff;
|
||||
r300->hw.vap_flush.cmd[8] = cmdpacket0(r300->radeon.radeonScreen, R300_VAP_PVS_STATE_FLUSH_REG, 1);
|
||||
r300->hw.vap_flush.cmd[9] = 0;
|
||||
} else {
|
||||
ALLOC_STATE(vap_flush, never, 10, 0);
|
||||
}
|
||||
|
||||
|
||||
ALLOC_STATE(vpi, vpu, R300_VPI_CMDSIZE, 0);
|
||||
r300->hw.vpi.cmd[0] =
|
||||
cmdvpu(r300->radeon.radeonScreen, R300_PVS_CODE_START, 0);
|
||||
|
|
|
|||
|
|
@ -355,7 +355,6 @@ struct r300_hw_state {
|
|||
struct radeon_state_atom zb_hiz_offset; /* (4F44) */
|
||||
struct radeon_state_atom zb_hiz_pitch; /* (4F54) */
|
||||
|
||||
struct radeon_state_atom vap_flush;
|
||||
struct radeon_state_atom vpi; /* vp instructions */
|
||||
struct radeon_state_atom vpp; /* vp parameters */
|
||||
struct radeon_state_atom vps; /* vertex point size (?) */
|
||||
|
|
|
|||
|
|
@ -366,7 +366,6 @@ static void r300ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq )
|
|||
p = (GLint) plane - (GLint) GL_CLIP_PLANE0;
|
||||
ip = (GLint *)ctx->Transform._ClipUserPlane[p];
|
||||
|
||||
R300_STATECHANGE( rmesa, vap_flush );
|
||||
R300_STATECHANGE( rmesa, vpucp[p] );
|
||||
rmesa->hw.vpucp[p].cmd[R300_VPUCP_X] = ip[0];
|
||||
rmesa->hw.vpucp[p].cmd[R300_VPUCP_Y] = ip[1];
|
||||
|
|
|
|||
|
|
@ -342,8 +342,6 @@ static void r300EmitVertexProgram(r300ContextPtr r300, int dest, struct r300_ver
|
|||
|
||||
assert((code->length > 0) && (code->length % 4 == 0));
|
||||
|
||||
R300_STATECHANGE( r300, vap_flush );
|
||||
|
||||
switch ((dest >> 8) & 0xf) {
|
||||
case 0:
|
||||
R300_STATECHANGE(r300, vpi);
|
||||
|
|
@ -381,7 +379,7 @@ void r300SetupVertexProgram(r300ContextPtr rmesa)
|
|||
((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0;
|
||||
((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0;
|
||||
|
||||
R300_STATECHANGE(rmesa, vap_flush);
|
||||
R300_STATECHANGE(rmesa, vap_cntl);
|
||||
R300_STATECHANGE(rmesa, vpp);
|
||||
param_count = r300VertexProgUpdateParams(ctx, prog, (float *)&rmesa->hw.vpp.cmd[R300_VPP_PARAM_0]);
|
||||
bump_vpu_count(rmesa->hw.vpp.cmd, param_count);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue