From 598e220f9581db750cf212c59275d25fda810fe1 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sat, 4 Sep 2010 19:10:23 -0700 Subject: r300/compiler: Clean up rc_pair_alloc_source() --- .../dri/r300/compiler/radeon_program_pair.c | 32 ++++++++-------------- 1 file changed, 12 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c index 5a50584b72..c31efdb059 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c @@ -45,23 +45,16 @@ int rc_pair_alloc_source(struct rc_pair_instruction *pair, if ((!rgb && !alpha) || file == RC_FILE_NONE) return 0; - if (rgb && pair->RGB.Src[RC_PAIR_PRESUB_SRC].Used) { - if (file == RC_FILE_PRESUB) { - if (index != pair->RGB.Src[RC_PAIR_PRESUB_SRC].Index) { + /* Make sure only one presubtract operation is used per instruction. */ + if (file == RC_FILE_PRESUB) { + if (rgb && pair->RGB.Src[RC_PAIR_PRESUB_SRC].Used + && index != pair->RGB.Src[RC_PAIR_PRESUB_SRC].Index) { return -1; - } - } else { - rgb_used++; } - } - if (alpha && pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Used) { - if (file == RC_FILE_PRESUB) { - if (index != pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Index) { + if (alpha && pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Used + && index != pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Index) { return -1; - } - } else { - alpha_used++; } } @@ -92,17 +85,16 @@ int rc_pair_alloc_source(struct rc_pair_instruction *pair, candidate = i; } } - if (candidate < 0 || (rgb && rgb_used > 2) || (alpha && alpha_used > 2)) + + if (file == RC_FILE_PRESUB) { + candidate = RC_PAIR_PRESUB_SRC; + } else if (candidate < 0 || (rgb && rgb_used > 2) + || (alpha && alpha_used > 2)) { return -1; + } /* candidate >= 0 */ - /* Even if we have a presub src, the above loop needs to run, - * because we still need to make sure there is a free source. - */ - if (file == RC_FILE_PRESUB) - candidate = RC_PAIR_PRESUB_SRC; - if (rgb) { pair->RGB.Src[candidate].Used = 1; pair->RGB.Src[candidate].File = file; -- cgit v1.2.3