Lines Matching defs:output

670 /* check for a genuine gl_PointSize output vs one from nir_lower_point_size_mov */
723 is_inlined(const bool *inlined, const struct pipe_stream_output *output)
725 for (unsigned i = 0; i < output->num_components; i++)
726 if (!inlined[output->start_component + i])
777 /* this is a fully unrolled struct: find the number of vec components to output */
813 const struct pipe_stream_output *packed_output = &so_info->output[i];
829 /* PSIZ from nir_lower_point_size_mov breaks stream output, so always skip it */
849 const struct pipe_stream_output *output = &so_info->output[i];
850 unsigned slot = reverse_map[output->register_index];
852 zs->sinfo.so_info.stride[output->output_buffer] = so_info->stride[output->output_buffer];
857 var = find_var_with_location_frac(zs->nir, slot--, output->start_component, have_psiz);
861 slot = reverse_map[output->register_index];
864 for (unsigned j = 0; j < output->num_components; j++)
865 inlined[slot][output->start_component + j] = true;
867 if (is_inlined(inlined[slot], output))
874 if (!is_struct && (num_components == output->num_components || (num_components > output->num_components && output->num_components == 4))) {
876 var->data.xfb.buffer = output->output_buffer;
877 var->data.xfb.stride = so_info->stride[output->output_buffer] * 4;
878 var->data.offset = output->dst_offset * 4;
879 var->data.stream = output->stream;
880 for (unsigned j = 0; j < output->num_components; j++)
881 inlined[slot][output->start_component + j] = true;
885 packed_components[slot] += output->num_components;
886 packed_streams[slot] |= BITFIELD_BIT(output->stream);
887 packed_buffers[slot] |= BITFIELD_BIT(output->output_buffer);
888 for (unsigned j = 0; j < output->num_components; j++)
889 packed_offsets[output->register_index][j + output->start_component] = output->dst_offset + j;
894 /* if this was flagged as a packed output before, and if all the components are
895 * being output with the same stream on the same buffer with increasing offsets, this entire variable
896 * can be consolidated into a single output to conserve locations
899 const struct pipe_stream_output *output = &so_info->output[i];
900 unsigned slot = reverse_map[output->register_index];
901 if (is_inlined(inlined[slot], output))
906 var = find_var_with_location_frac(zs->nir, slot--, output->start_component, have_psiz);
932 /* in order to pack the xfb output, all the offsets must be sequentially incrementing */
941 /* this output can be consolidated: blast out all the data inlined */
943 var->data.xfb.buffer = output->output_buffer;
944 var->data.xfb.stride = so_info->stride[output->output_buffer] * 4;
945 var->data.offset = output->dst_offset * 4;
946 var->data.stream = output->stream;
960 /* these are packed/explicit varyings which can't be exported with normal output */
961 zs->sinfo.so_info.output[zs->sinfo.so_info.num_outputs] = *output;
963 zs->sinfo.so_info_slots[zs->sinfo.so_info.num_outputs++] = reverse_map[output->register_index];
966 /* ensure this doesn't get output in the shader by unsetting location */
1503 /* this is an output, nothing more needs to be done for it to be dropped */
1607 /* rewrite all input/output variables using 32bit types and load/stores */
2185 /* TODO: determine if there's any reason to cache spirv output? */
3355 /* gl_in[] receives values from equivalent built-in output
3362 /* we need to load the invocation-specific value of the vertex output and then store it to the per-patch output */