r300/compiler: Fix black terrain in Civ4
authorTom Stellard <tstellar@gmail.com>
Tue, 4 Jan 2011 18:53:49 +0000 (10:53 -0800)
committerTom Stellard <tstellar@gmail.com>
Tue, 4 Jan 2011 19:25:27 +0000 (11:25 -0800)
rc_inst_can_use_presub() wasn't checking for too many RGB sources in
Alpha instructions or too many Alpha sources in RGB instructions.

Note: This is a candidate for the 7.10 branch.

src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c

index bf393a9fb160a0b8a9db2e0246f3df479288a17b..2482fc68bebf9bd92c4d0e289d6535c864d3af10 100644 (file)
@@ -223,7 +223,6 @@ unsigned int rc_inst_can_use_presub(
 {
        struct can_use_presub_data d;
        unsigned int num_presub_srcs;
-       unsigned int presub_src_type = rc_source_type_mask(presub_writemask);
        const struct rc_opcode_info * info =
                                        rc_get_opcode_info(inst->U.I.Opcode);
 
@@ -253,13 +252,7 @@ unsigned int rc_inst_can_use_presub(
 
        num_presub_srcs = rc_presubtract_src_reg_count(presub_op);
 
-       if ((presub_src_type & RC_SOURCE_RGB)
-                                       && d.RGBCount + num_presub_srcs > 3) {
-               return 0;
-       }
-
-       if ((presub_src_type & RC_SOURCE_ALPHA)
-                                       && d.AlphaCount + num_presub_srcs > 3) {
+       if (d.RGBCount + num_presub_srcs > 3 || d.AlphaCount + num_presub_srcs > 3) {
                return 0;
        }