mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
r600g: Swizzle vertex data only once.
Vertex data swizzles are already done in the vertex shader. Doing them twice breaks BGRA vertex arrays for example.
This commit is contained in:
parent
b6e2c32626
commit
7d0f45563d
2 changed files with 4 additions and 35 deletions
|
|
@ -636,38 +636,4 @@ out_unknown:
|
|||
return ~0;
|
||||
}
|
||||
|
||||
static INLINE uint32_t r600_translate_vertex_data_swizzle(enum pipe_format format)
|
||||
{
|
||||
const struct util_format_description *desc = util_format_description(format);
|
||||
unsigned i;
|
||||
uint32_t word3;
|
||||
|
||||
assert(format);
|
||||
|
||||
if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
|
||||
fprintf(stderr, "r600: Bad format %s in %s:%d\n",
|
||||
util_format_short_name(format), __FUNCTION__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
word3 = 0;
|
||||
for (i = 0; i < desc->nr_channels; i++) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
word3 |= S_03000C_DST_SEL_X(desc->swizzle[0]);
|
||||
break;
|
||||
case 1:
|
||||
word3 |= S_03000C_DST_SEL_Y(desc->swizzle[1]);
|
||||
break;
|
||||
case 2:
|
||||
word3 |= S_03000C_DST_SEL_Z(desc->swizzle[2]);
|
||||
break;
|
||||
case 3:
|
||||
word3 |= S_03000C_DST_SEL_W(desc->swizzle[3]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return word3;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1276,7 +1276,10 @@ void evergreen_draw(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
|||
|
||||
word2 = format | S_030008_STRIDE(vertex_buffer->stride);
|
||||
|
||||
word3 = r600_translate_vertex_data_swizzle(rctx->vertex_elements->hw_format[i]);
|
||||
word3 = S_03000C_DST_SEL_X(V_03000C_SQ_SEL_X) |
|
||||
S_03000C_DST_SEL_Y(V_03000C_SQ_SEL_Y) |
|
||||
S_03000C_DST_SEL_Z(V_03000C_SQ_SEL_Z) |
|
||||
S_03000C_DST_SEL_W(V_03000C_SQ_SEL_W);
|
||||
|
||||
r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0, offset, 0xFFFFFFFF, rbuffer->bo);
|
||||
r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, rbuffer->size - offset - 1, 0xFFFFFFFF, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue