Mesa (master): freedreno/ir3: add helper to determine point-coord inputs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 24 22:54:58 UTC 2020
Module: Mesa
Branch: master
Commit: 022c363cfbb7e37eef5d5b7559d24f8237a72f27
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=022c363cfbb7e37eef5d5b7559d24f8237a72f27
Author: Rob Clark <robdclark at chromium.org>
Date: Mon Jun 22 08:24:55 2020 -0700
freedreno/ir3: add helper to determine point-coord inputs
This will simplify a bit the logic for setting up vinterp/vprepl in the
driver backend, and also avoid it being a flag-day when we switch the
texcoord pipe cap.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5595>
---
src/freedreno/ir3/ir3_shader.h | 2 --
src/gallium/drivers/freedreno/ir3/ir3_gallium.h | 18 ++++++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h
index 5ccbd8cb658..3e7ee89debe 100644
--- a/src/freedreno/ir3/ir3_shader.h
+++ b/src/freedreno/ir3/ir3_shader.h
@@ -769,8 +769,6 @@ struct ir3_shader_linkage {
static inline void
ir3_link_add(struct ir3_shader_linkage *l, uint8_t regid_, uint8_t compmask, uint8_t loc)
{
-
-
for (int j = 0; j < util_last_bit(compmask); j++) {
uint8_t comploc = loc + j;
l->varmask[comploc / 32] |= 1 << (comploc % 32);
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.h b/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
index 0f103388b67..e0a8d20e88d 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
+++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.h
@@ -49,4 +49,22 @@ void ir3_shader_state_delete(struct pipe_context *pctx, void *hwcso);
void ir3_prog_init(struct pipe_context *pctx);
+/**
+ * A helper to determine if a fs input 'i' is point/sprite coord, given
+ * the specified sprite_coord_enable mask
+ */
+static inline bool
+ir3_point_sprite(const struct ir3_shader_variant *fs, int i,
+ uint32_t sprite_coord_enable, bool *coord_mode)
+{
+ gl_varying_slot slot = fs->inputs[i].slot;
+ (void)coord_mode; /* this will be used later */
+ /* since we don't enable PIPE_CAP_TGSI_TEXCOORD: */
+ if (slot >= VARYING_SLOT_VAR0) {
+ unsigned texmask = 1 << (slot - VARYING_SLOT_VAR0);
+ return !!(sprite_coord_enable & texmask);
+ }
+ return false;
+}
+
#endif /* IR3_GALLIUM_H_ */
More information about the mesa-commit
mailing list