|
|
@@ -429,12 +429,16 @@ static void r300_set_clip_state(struct pipe_context* pipe, |
|
|
|
clip->clip = *state; |
|
|
|
|
|
|
|
if (r300->screen->caps.has_tcl) { |
|
|
|
BEGIN_CB(clip->cb, 29); |
|
|
|
OUT_CB_REG(R300_VAP_PVS_VECTOR_INDX_REG, |
|
|
|
(r300->screen->caps.is_r500 ? |
|
|
|
R500_PVS_UCP_START : R300_PVS_UCP_START)); |
|
|
|
OUT_CB_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, 6 * 4); |
|
|
|
OUT_CB_TABLE(state->ucp, 6 * 4); |
|
|
|
r300->clip_state.size = 2 + !!state->nr * 3 + state->nr * 4; |
|
|
|
|
|
|
|
BEGIN_CB(clip->cb, r300->clip_state.size); |
|
|
|
if (state->nr) { |
|
|
|
OUT_CB_REG(R300_VAP_PVS_VECTOR_INDX_REG, |
|
|
|
(r300->screen->caps.is_r500 ? |
|
|
|
R500_PVS_UCP_START : R300_PVS_UCP_START)); |
|
|
|
OUT_CB_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, state->nr * 4); |
|
|
|
OUT_CB_TABLE(state->ucp, state->nr * 4); |
|
|
|
} |
|
|
|
OUT_CB_REG(R300_VAP_CLIP_CNTL, ((1 << state->nr) - 1) | |
|
|
|
R300_PS_UCP_MODE_CLIP_AS_TRIFAN); |
|
|
|
END_CB; |