~mmach/netext73/mesa-ryzen

« back to all changes in this revision

Viewing changes to src/broadcom/compiler/v3d_nir_lower_line_smooth.c

  • Committer: mmach
  • Date: 2023-11-02 21:31:35 UTC
  • Revision ID: netbit73@gmail.com-20231102213135-18d4tzh7tj0uz752
2023-11-02 22:11:57

Show diffs side-by-side

added added

removed removed

Lines of Context:
60
60
{
61
61
        bool progress = false;
62
62
 
63
 
        nir_builder b;
64
 
 
65
 
        nir_builder_init(&b, impl);
 
63
        nir_builder b = nir_builder_create(impl);
66
64
 
67
65
        nir_foreach_block(block, impl) {
68
66
                nir_foreach_instr_safe(instr, block) {
90
88
initialise_coverage_var(struct lower_line_smooth_state *state,
91
89
                        nir_function_impl *impl)
92
90
{
93
 
        nir_builder b;
94
 
 
95
 
        nir_builder_init(&b, impl);
96
 
 
97
 
        b.cursor = nir_before_block(nir_start_block(impl));
 
91
        nir_builder b = nir_builder_at(nir_before_block(nir_start_block(impl)));
98
92
 
99
93
        nir_ssa_def *line_width = nir_load_line_width(&b);
100
94
 
116
110
                         nir_fmul(&b,
117
111
                                  nir_imm_float(&b, 1.0f / M_SQRT2),
118
112
                                  nir_fsub(&b, pixels_from_center,
119
 
                                           nir_fmul(&b,
120
 
                                                    line_width,
121
 
                                                    nir_imm_float(&b, 0.5f)))));
 
113
                                           nir_fmul_imm(&b,
 
114
                                                        line_width,
 
115
                                                        0.5f))));
122
116
 
123
117
        /* Discard fragments that aren’t covered at all by the line */
124
 
        nir_ssa_def *outside = nir_fge(&b, nir_imm_float(&b, 0.0f), coverage);
 
118
        nir_ssa_def *outside = nir_fle_imm(&b, coverage, 0.0f);
125
119
 
126
120
        nir_discard_if(&b, outside);
127
121
 
157
151
                .coverage = make_coverage_var(s),
158
152
        };
159
153
 
160
 
        nir_foreach_function(function, s) {
 
154
        nir_foreach_function_with_impl(function, impl, s) {
161
155
                if (function->is_entrypoint)
162
 
                        initialise_coverage_var(&state, function->impl);
 
156
                        initialise_coverage_var(&state, impl);
163
157
 
164
 
                progress |= lower_line_smooth_func(&state, function->impl);
 
158
                progress |= lower_line_smooth_func(&state, impl);
165
159
 
166
160
                if (progress) {
167
 
                        nir_metadata_preserve(function->impl,
 
161
                        nir_metadata_preserve(impl,
168
162
                                              nir_metadata_block_index |
169
163
                                              nir_metadata_dominance);
170
164
                } else {
171
 
                        nir_metadata_preserve(function->impl, nir_metadata_all);
 
165
                        nir_metadata_preserve(impl, nir_metadata_all);
172
166
                }
173
167
        }
174
168