diff options
Diffstat (limited to 'src/gallium/drivers/r600/eg_asm.c')
-rw-r--r-- | src/gallium/drivers/r600/eg_asm.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/src/gallium/drivers/r600/eg_asm.c b/src/gallium/drivers/r600/eg_asm.c index 80c5de39750..8190df725df 100644 --- a/src/gallium/drivers/r600/eg_asm.c +++ b/src/gallium/drivers/r600/eg_asm.c | |||
@@ -94,31 +94,9 @@ int eg_bc_cf_build(struct r600_bc *bc, struct r600_bc_cf *cf) | |||
94 | return 0; | 94 | return 0; |
95 | } | 95 | } |
96 | 96 | ||
97 | void eg_cf_vtx(struct r600_vertex_element *ve, u32 *bytecode, unsigned count) | 97 | void eg_cf_vtx(struct r600_vertex_element *ve) |
98 | { | 98 | { |
99 | struct r600_pipe_state *rstate; | 99 | struct r600_pipe_state *rstate = &ve->rstate; |
100 | unsigned i = 0; | ||
101 | |||
102 | if (count > 8) { | ||
103 | bytecode[i++] = S_SQ_CF_WORD0_ADDR(8 >> 1); | ||
104 | bytecode[i++] = S_SQ_CF_WORD1_CF_INST(EG_V_SQ_CF_WORD1_SQ_CF_INST_VTX) | | ||
105 | S_SQ_CF_WORD1_BARRIER(1) | | ||
106 | S_SQ_CF_WORD1_COUNT(8 - 1); | ||
107 | bytecode[i++] = S_SQ_CF_WORD0_ADDR(40 >> 1); | ||
108 | bytecode[i++] = S_SQ_CF_WORD1_CF_INST(EG_V_SQ_CF_WORD1_SQ_CF_INST_VTX) | | ||
109 | S_SQ_CF_WORD1_BARRIER(1) | | ||
110 | S_SQ_CF_WORD1_COUNT(count - 8 - 1); | ||
111 | } else { | ||
112 | bytecode[i++] = S_SQ_CF_WORD0_ADDR(8 >> 1); | ||
113 | bytecode[i++] = S_SQ_CF_WORD1_CF_INST(EG_V_SQ_CF_WORD1_SQ_CF_INST_VTX) | | ||
114 | S_SQ_CF_WORD1_BARRIER(1) | | ||
115 | S_SQ_CF_WORD1_COUNT(count - 1); | ||
116 | } | ||
117 | bytecode[i++] = S_SQ_CF_WORD0_ADDR(0); | ||
118 | bytecode[i++] = S_SQ_CF_WORD1_CF_INST(EG_V_SQ_CF_WORD1_SQ_CF_INST_RETURN) | | ||
119 | S_SQ_CF_WORD1_BARRIER(1); | ||
120 | |||
121 | rstate = &ve->rstate; | ||
122 | rstate->id = R600_PIPE_STATE_FETCH_SHADER; | 100 | rstate->id = R600_PIPE_STATE_FETCH_SHADER; |
123 | rstate->nregs = 0; | 101 | rstate->nregs = 0; |
124 | r600_pipe_state_add_reg(rstate, R_0288A8_SQ_PGM_RESOURCES_FS, | 102 | r600_pipe_state_add_reg(rstate, R_0288A8_SQ_PGM_RESOURCES_FS, |