Mesa (master): r300/compiler: Clean up rc_pair_alloc_source()
Tom Stellard
tstellar at kemper.freedesktop.org
Sat Sep 11 02:54:07 UTC 2010
Module: Mesa
Branch: master
Commit: 598e220f9581db750cf212c59275d25fda810fe1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=598e220f9581db750cf212c59275d25fda810fe1
Author: Tom Stellard <tstellar at gmail.com>
Date: Sat Sep 4 19:10:23 2010 -0700
r300/compiler: Clean up rc_pair_alloc_source()
---
.../dri/r300/compiler/radeon_program_pair.c | 32 +++++++------------
1 files changed, 12 insertions(+), 20 deletions(-)
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 5a50584..c31efdb 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;
More information about the mesa-commit
mailing list