gallivm: add mask api to force mask
authorDave Airlie <airlied@redhat.com>
Thu, 19 Mar 2020 04:10:31 +0000 (14:10 +1000)
committerMarge Bot <eric+marge@anholt.net>
Wed, 6 May 2020 06:20:37 +0000 (06:20 +0000)
For per-sample shading the mask needs to be forced for each
iteration of the fragment shader.

Just adds the API for now.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>

src/gallium/auxiliary/gallivm/lp_bld_flow.c
src/gallium/auxiliary/gallivm/lp_bld_flow.h

index 3bd24b4ba875b3d6a6df7b966e1122316a6fd4c2..d5d903f66f237d39ab8c51a63d20a37db81e4e90 100644 (file)
@@ -200,6 +200,16 @@ lp_build_mask_update(struct lp_build_mask_context *mask,
    LLVMBuildStore(mask->skip.gallivm->builder, value, mask->var);
 }
 
+/*
+ * Update boolean mask with given value.
+ * Used for per-sample shading to force per-sample execution masks.
+ */
+void
+lp_build_mask_force(struct lp_build_mask_context *mask,
+                    LLVMValueRef value)
+{
+   LLVMBuildStore(mask->skip.gallivm->builder, value, mask->var);
+}
 
 /**
  * End section of code which is predicated on a mask.
index ddb3fdfd7b754031a20299508307096574933dcd..c4ffa833e2addab830b6250a6eee62a61d7d74b3 100644 (file)
@@ -94,6 +94,10 @@ void
 lp_build_mask_update(struct lp_build_mask_context *mask,
                      LLVMValueRef value);
 
+void
+lp_build_mask_force(struct lp_build_mask_context *mask,
+                    LLVMValueRef value);
+
 void
 lp_build_mask_check(struct lp_build_mask_context *mask);