aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/nir/nir_intrinsics.py
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2020-01-24 11:36:37 +0100
committerMarge Bot <[email protected]>2020-01-29 09:49:50 +0000
commit9021b45b35ab70dd3cf2a9be45cb1f6e63d34158 (patch)
tree75046ea1aa3bc5a0aa9249cb33f3d98b63e5bb57 /src/compiler/nir/nir_intrinsics.py
parentdf8dd12e5b380ae22991ccd8cc163fe6dc751b70 (diff)
nir: add nir_intrinsic_load_barycentric_model
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3578>
Diffstat (limited to 'src/compiler/nir/nir_intrinsics.py')
-rw-r--r--src/compiler/nir/nir_intrinsics.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py
index 3768016a787..9269ac99a2d 100644
--- a/src/compiler/nir/nir_intrinsics.py
+++ b/src/compiler/nir/nir_intrinsics.py
@@ -646,9 +646,10 @@ system_value("user_data_amd", 4)
# Barycentric coordinate intrinsics.
#
# These set up the barycentric coordinates for a particular interpolation.
-# The first three are for the simple cases: pixel, centroid, or per-sample
-# (at gl_SampleID). The next two handle interpolating at a specified
-# sample location, or interpolating with a vec2 offset,
+# The first four are for the simple cases: pixel, centroid, per-sample
+# (at gl_SampleID), or pull model (1/W, 1/I, 1/J) at the pixel center. The next
+# three two handle interpolating at a specified sample location, or
+# interpolating with a vec2 offset,
#
# The interp_mode index should be either the INTERP_MODE_SMOOTH or
# INTERP_MODE_NOPERSPECTIVE enum values.
@@ -656,18 +657,19 @@ system_value("user_data_amd", 4)
# The vec2 value produced by these intrinsics is intended for use as the
# barycoord source of a load_interpolated_input intrinsic.
-def barycentric(name, src_comp=[]):
- intrinsic("load_barycentric_" + name, src_comp=src_comp, dest_comp=2,
+def barycentric(name, dst_comp, src_comp=[]):
+ intrinsic("load_barycentric_" + name, src_comp=src_comp, dest_comp=dst_comp,
indices=[INTERP_MODE], flags=[CAN_ELIMINATE, CAN_REORDER])
# no sources.
-barycentric("pixel")
-barycentric("centroid")
-barycentric("sample")
+barycentric("pixel", 2)
+barycentric("centroid", 2)
+barycentric("sample", 2)
+barycentric("model", 3)
# src[] = { sample_id }.
-barycentric("at_sample", [1])
+barycentric("at_sample", 2, [1])
# src[] = { offset.xy }.
-barycentric("at_offset", [2])
+barycentric("at_offset", 2, [2])
# Load sample position:
#