llvmpipe: add multisample alpha to one support
authorDave Airlie <airlied@redhat.com>
Fri, 20 Mar 2020 09:30:06 +0000 (19:30 +1000)
committerMarge Bot <eric+marge@anholt.net>
Wed, 6 May 2020 06:20:37 +0000 (06:20 +0000)
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>

src/gallium/drivers/llvmpipe/lp_state_fs.c

index 15ec904805251a7b533c772f6209fbb8ffc0ea1d..cf0a68ecc8d04408e9070f16ceb7b84e26b0fee6 100644 (file)
@@ -690,7 +690,16 @@ generate_fs_loop(struct gallivm_state *gallivm,
          }
       }
    }
-
+   if (key->blend.alpha_to_one && key->multisample) {
+      for (attrib = 0; attrib < shader->info.base.num_outputs; ++attrib) {
+         unsigned cbuf = shader->info.base.output_semantic_index[attrib];
+         if ((shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR) &&
+             ((cbuf < key->nr_cbufs) || (cbuf == 1 && dual_source_blend)))
+            if (outputs[cbuf][3]) {
+               LLVMBuildStore(builder, lp_build_const_vec(gallivm, type, 1.0), outputs[cbuf][3]);
+            }
+      }
+   }
    if (shader->info.base.writes_samplemask) {
       int smaski = find_output_by_semantic(&shader->info.base,
                                            TGSI_SEMANTIC_SAMPLEMASK,