Mesa (master): radeonsi: Make sure to use float number format for packed float colour formats.

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Jan 24 08:53:15 UTC 2013


Module: Mesa
Branch: master
Commit: d0096dfa85a176c387701a035cfc21d55f615ed6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0096dfa85a176c387701a035cfc21d55f615ed6

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Tue Jan 22 17:05:08 2013 +0100

radeonsi: Make sure to use float number format for packed float colour formats.

These aren't covered by UTIL_FORMAT_TYPE_FLOAT.

Fixes 15 piglit (sub)tests.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/gallium/drivers/radeonsi/si_state.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index cd40e1a..a27dbdd 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;




More information about the mesa-commit mailing list