Lines Matching refs:info
143 !s->info.has_transform_feedback_varyings) {
193 struct pan_shader_info *info)
195 memset(info, 0, sizeof(*info));
198 bifrost_compile_shader_nir(s, inputs, binary, info);
208 midgard_compile_shader_nir(s, inputs, binary, info);
211 info->stage = s->info.stage;
212 info->contains_barrier = s->info.uses_memory_barrier ||
213 s->info.uses_control_barrier;
214 info->separable = s->info.separate_shader;
216 switch (info->stage) {
218 info->attributes_read = s->info.inputs_read;
219 info->attributes_read_count = util_bitcount64(info->attributes_read);
220 info->attribute_count = info->attributes_read_count;
223 bool vertex_id = BITSET_TEST(s->info.system_values_read,
226 info->attribute_count = MAX2(info->attribute_count, PAN_VERTEX_ID + 1);
228 bool instance_id = BITSET_TEST(s->info.system_values_read,
231 info->attribute_count = MAX2(info->attribute_count, PAN_INSTANCE_ID + 1);
234 info->vs.writes_point_size =
235 s->info.outputs_written & (1 << VARYING_SLOT_PSIZ);
238 info->varyings.output_count =
239 util_last_bit(s->info.outputs_written >> VARYING_SLOT_VAR0);
241 collect_varyings(s, nir_var_shader_out, info->varyings.output,
242 &info->varyings.output_count);
246 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
247 info->fs.writes_depth = true;
248 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL))
249 info->fs.writes_stencil = true;
250 if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK))
251 info->fs.writes_coverage = true;
253 info->fs.outputs_read = s->info.outputs_read >> FRAG_RESULT_DATA0;
254 info->fs.outputs_written = s->info.outputs_written >> FRAG_RESULT_DATA0;
255 info->fs.sample_shading = s->info.fs.uses_sample_shading;
257 info->fs.can_discard = s->info.fs.uses_discard;
258 info->fs.early_fragment_tests = s->info.fs.early_fragment_tests;
263 info->fs.sidefx = s->info.writes_memory ||
264 s->info.fs.uses_discard ||
265 s->info.fs.uses_demote;
268 info->fs.can_early_z =
269 !info->fs.sidefx &&
270 !info->fs.writes_depth &&
271 !info->fs.writes_stencil &&
272 !info->fs.writes_coverage;
275 info->fs.can_fpk =
276 !info->fs.writes_depth &&
277 !info->fs.writes_stencil &&
278 !info->fs.writes_coverage &&
279 !info->fs.can_discard &&
280 !info->fs.outputs_read;
285 info->contains_barrier |= s->info.fs.needs_quad_helper_invocations;
287 info->fs.reads_frag_coord =
288 (s->info.inputs_read & (1 << VARYING_SLOT_POS)) ||
289 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_FRAG_COORD);
290 info->fs.reads_point_coord =
291 s->info.inputs_read & (1 << VARYING_SLOT_PNTC);
292 info->fs.reads_face =
293 (s->info.inputs_read & (1 << VARYING_SLOT_FACE)) ||
294 BITSET_TEST(s->info.system_values_read, SYSTEM_VALUE_FRONT_FACE);
296 info->varyings.output_count =
297 util_last_bit(s->info.outputs_read >> VARYING_SLOT_VAR0);
299 collect_varyings(s, nir_var_shader_in, info->varyings.input,
300 &info->varyings.input_count);
304 info->wls_size = s->info.shared_size;
310 info->outputs_written = s->info.outputs_written;
313 info->ubo_count = s->info.num_ubos;
314 if (info->sysvals.sysval_count && inputs->fixed_sysval_ubo < 0)
315 info->ubo_count++;
317 info->attribute_count += BITSET_LAST_BIT(s->info.images_used);
318 info->writes_global = s->info.writes_memory;
320 info->sampler_count = info->texture_count = BITSET_LAST_BIT(s->info.textures_used);
324 for (unsigned i = 0; i < ARRAY_SIZE(info->bifrost.blend); ++i) {
325 info->bifrost.blend[i].format =
326 bifrost_blend_type_from_nir(info->bifrost.blend[i].type);