From d0096dfa85a176c387701a035cfc21d55f615ed6 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Tue, 22 Jan 2013 17:05:08 +0100 Subject: radeonsi: Make sure to use float number format for packed float colour formats. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These aren't covered by UTIL_FORMAT_TYPE_FLOAT. Fixes 15 piglit (sub)tests. Signed-off-by: Michel Dänzer --- src/gallium/drivers/radeonsi/si_state.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index cd40e1ac774..a27dbdd775e 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -1613,7 +1613,7 @@ static void si_cb(struct r600_context *rctx, struct si_pm4_state *pm4, break; } } - if (desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT) { + if (i == 4 || desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT) { ntype = V_028C70_NUMBER_FLOAT; } else { ntype = V_028C70_NUMBER_UNORM; @@ -2087,7 +2087,9 @@ static struct pipe_sampler_view *si_create_sampler_view(struct pipe_context *ctx util_format_compose_swizzles(desc->swizzle, state_swizzle, swizzle); first_non_void = util_format_get_first_non_void_channel(pipe_format); - switch (desc->channel[first_non_void].type) { + if (first_non_void < 0) { + num_format = V_008F14_IMG_NUM_FORMAT_FLOAT; + } else switch (desc->channel[first_non_void].type) { case UTIL_FORMAT_TYPE_FLOAT: num_format = V_008F14_IMG_NUM_FORMAT_FLOAT; break; -- cgit v1.2.3