panfrost: Use shader_info harder
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 8 Jun 2020 22:05:21 +0000 (18:05 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 12 Jun 2020 14:45:50 +0000 (14:45 +0000)
We already have this metadata..

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5423>

src/gallium/drivers/panfrost/pan_assemble.c
src/panfrost/util/pan_ir.h

index dfda97f9463f1eae09e66c7d6c0cb620aed0c5ac..7d0f07a0dd100644a098ed0ca5e620f42d470d5a 100644 (file)
@@ -231,11 +231,14 @@ panfrost_shader_compile(struct panfrost_context *ctx,
         }
 
         state->can_discard = s->info.fs.uses_discard;
-        state->writes_point_size = program.writes_point_size;
-        state->reads_point_coord = false;
         state->helper_invocations = s->info.fs.needs_helper_invocations;
         state->stack_size = program.tls_size;
 
+        state->reads_frag_coord = s->info.inputs_read & (1 << VARYING_SLOT_POS);
+        state->reads_point_coord = s->info.inputs_read & (1 << VARYING_SLOT_PNTC);
+        state->reads_face = s->info.inputs_read & (1 << VARYING_SLOT_FACE);
+        state->writes_point_size = s->info.outputs_written & (1 << VARYING_SLOT_PSIZ);
+
         if (outputs_written)
                 *outputs_written = s->info.outputs_written;
 
@@ -263,17 +266,4 @@ panfrost_shader_compile(struct panfrost_context *ctx,
                         state->varyings[loc + c] = pan_format_from_glsl(var->type, var->data.location_frac);
                 }
         }
-
-        for (unsigned i = 0; i < state->varying_count; ++i) {
-                unsigned location = state->varyings_loc[i];
-
-                if (location == VARYING_SLOT_POS && stage == MESA_SHADER_FRAGMENT)
-                        state->reads_frag_coord = true;
-                else if (location == VARYING_SLOT_PSIZ)
-                        state->writes_point_size = true;
-                else if (location == VARYING_SLOT_PNTC)
-                        state->reads_point_coord = true;
-                else if (location == VARYING_SLOT_FACE)
-                        state->reads_face = true;
-        }
 }
index 221967d3b5d1c3459639d835bb2168110014ab9d..aa0eb7904ce49de45cdf6951d75d04a940d8d3cc 100644 (file)
@@ -95,9 +95,6 @@ typedef struct {
         unsigned sysval_count;
         unsigned sysvals[MAX_SYSVAL_COUNT];
 
-        /* Boolean properties of the program */
-        bool writes_point_size;
-
         int first_tag;
 
         struct util_dynarray compiled;