Lines Matching refs:info

135                     !s->info.has_transform_feedback_varyings) {
184 struct pan_shader_info *info)
186 memset(info, 0, sizeof(*info));
189 bifrost_compile_shader_nir(s, inputs, binary, info);
199 midgard_compile_shader_nir(s, inputs, binary, info);
202 info->stage = s->info.stage;
203 info->contains_barrier = s->info.uses_memory_barrier ||
204 s->info.uses_control_barrier;
205 info->separable = s->info.separate_shader;
207 switch (info->stage) {
209 info->attribute_count = util_bitcount64(s->info.inputs_read);
212 bool vertex_id = BITSET_TEST(s->info.system_values_read,
215 info->attribute_count = MAX2(info->attribute_count, PAN_VERTEX_ID + 1);
217 bool instance_id = BITSET_TEST(s->info.system_values_read,
220 info->attribute_count = MAX2(info->attribute_count, PAN_INSTANCE_ID + 1);
223 info->vs.writes_point_size =
224 s->info.outputs_written & (1 << VARYING_SLOT_PSIZ);
225 collect_varyings(s, nir_var_shader_out, info->varyings.output,
226 &info->varyings.output_count);
229 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
230 info->fs.writes_depth = true;
231 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL))
232 info->fs.writes_stencil = true;
233 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK))
234 info->fs.writes_coverage = true;
236 info->fs.outputs_read = s->info.outputs_read >> FRAG_RESULT_DATA0;
237 info->fs.outputs_written = s->info.outputs_written >> FRAG_RESULT_DATA0;
240 info->fs.sample_shading = s->info.fs.uses_sample_shading ||
241 info->fs.outputs_read;
243 info->fs.can_discard = s->info.fs.uses_discard;
244 info->fs.helper_invocations = s->info.fs.needs_quad_helper_invocations;
245 info->fs.early_fragment_tests = s->info.fs.early_fragment_tests;
250 info->fs.sidefx = s->info.writes_memory ||
251 s->info.fs.uses_discard ||
252 s->info.fs.uses_demote;
255 info->fs.can_early_z =
256 !info->fs.sidefx &&
257 !info->fs.writes_depth &&
258 !info->fs.writes_stencil &&
259 !info->fs.writes_coverage;
262 info->fs.can_fpk =
263 !info->fs.writes_depth &&
264 !info->fs.writes_stencil &&
265 !info->fs.writes_coverage &&
266 !info->fs.can_discard &&
267 !info->fs.outputs_read;
269 info->fs.reads_frag_coord =
270 (s->info.inputs_read & (1 << VARYING_SLOT_POS)) ||
271 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_FRAG_COORD);
272 info->fs.reads_point_coord =
273 s->info.inputs_read & (1 << VARYING_SLOT_PNTC);
274 info->fs.reads_face =
275 (s->info.inputs_read & (1 << VARYING_SLOT_FACE)) ||
276 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_FRONT_FACE);
277 info->fs.reads_sample_id =
278 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_SAMPLE_ID);
279 info->fs.reads_sample_pos =
280 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_SAMPLE_POS);
281 info->fs.reads_sample_mask_in =
282 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_SAMPLE_MASK_IN);
283 info->fs.reads_helper_invocation =
284 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_HELPER_INVOCATION);
285 collect_varyings(s, nir_var_shader_in, info->varyings.input,
286 &info->varyings.input_count);
289 info->wls_size = s->info.shared_size;
295 info->outputs_written = s->info.outputs_written;
298 if (info->sysvals.sysval_count)
299 info->ubo_count = MAX2(s->info.num_ubos + 1, inputs->sysval_ubo + 1);
301 info->ubo_count = s->info.num_ubos;
303 info->attribute_count += util_last_bit(s->info.images_used);
304 info->writes_global = s->info.writes_memory;
306 info->sampler_count = info->texture_count = BITSET_LAST_BIT(s->info.textures_used);
310 for (unsigned i = 0; i < ARRAY_SIZE(info->bifrost.blend); ++i) {
311 info->bifrost.blend[i].format =
312 bifrost_blend_type_from_nir(info->bifrost.blend[i].type);