diff options
author | Dave Airlie <airlied@redhat.com> | 2010-09-24 09:50:48 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-09-24 12:34:43 +1000 |
commit | b7ab9ee84e4e4ff48b335c74c110d82e48bee4a5 (patch) | |
tree | c432c2d12863b47187218b9eb5a1aea9dae792bc /src/gallium/drivers/r600/eg_hw_states.c | |
parent | 4388087f199f020e15024c908ba840a250cf29e1 (diff) |
r600g: add some more vertex format support.
adds the sscaled formats, this passes some more of the draw-vertices tests.
Diffstat (limited to 'src/gallium/drivers/r600/eg_hw_states.c')
-rw-r--r-- | src/gallium/drivers/r600/eg_hw_states.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/drivers/r600/eg_hw_states.c b/src/gallium/drivers/r600/eg_hw_states.c index 42b49002c3..77ac444fe2 100644 --- a/src/gallium/drivers/r600/eg_hw_states.c +++ b/src/gallium/drivers/r600/eg_hw_states.c @@ -849,19 +849,25 @@ static void eg_init_config(struct r600_context *rctx) } static int eg_vs_resource(struct r600_context *rctx, int id, struct r600_resource *rbuffer, uint32_t offset, - uint32_t stride, uint32_t format) + uint32_t stride, uint32_t src_format) { struct radeon_state *vs_resource = &rctx->vs_resource[id]; struct r600_screen *rscreen = rctx->screen; + unsigned format, num_format = 0, format_comp = 0; + + format = r600_translate_colorformat(src_format); + r600_translate_vertex_num_format(src_format, &num_format, &format_comp); + format = S_030008_DATA_FORMAT(format) | S_030008_NUM_FORMAT_ALL(num_format) | + S_030008_FORMAT_COMP_ALL(format_comp); + radeon_state_init(vs_resource, rscreen->rw, R600_STATE_RESOURCE, id, R600_SHADER_VS); radeon_ws_bo_reference(rscreen->rw, &vs_resource->bo[0], rbuffer->bo); vs_resource->nbo = 1; vs_resource->states[EG_PS_RESOURCE__RESOURCE0_WORD0] = offset; vs_resource->states[EG_PS_RESOURCE__RESOURCE0_WORD1] = rbuffer->size - offset - 1; - vs_resource->states[EG_PS_RESOURCE__RESOURCE0_WORD2] = S_030008_STRIDE(stride) | - S_030008_DATA_FORMAT(format); + vs_resource->states[EG_PS_RESOURCE__RESOURCE0_WORD2] = S_030008_STRIDE(stride) | format; vs_resource->states[EG_PS_RESOURCE__RESOURCE0_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) | |