This was wrong, if anything it should be sorted by device_location, and NIR usually
provides this.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5085>
void VertexShaderFromNir::emit_shader_start()
{
- m_export_processor->setup_paramn_map();
}
bool VertexShaderFromNir::scan_sysvalue_access(nir_instr *instr)
{
}
-void VertexStageExportBase::setup_paramn_map()
-{
- priority_queue<int, std::vector<int>, std::greater<int>> q;
- for (auto a: m_param_map) {
- q.push(a.first);
- }
-
- int next_param = 0;
- while (!q.empty()) {
- int loc = q.top();
- q.pop();
- m_param_map[loc] = next_param++;
- }
-}
-
bool VertexStageExportBase::do_process_outputs(nir_variable *output)
{
if (output->data.location == VARYING_SLOT_COL0 ||
public:
VertexStageExportBase(VertexStage& proc);
virtual ~VertexStageExportBase();
- void setup_paramn_map();
virtual bool store_deref(const nir_variable *out_var, nir_intrinsic_instr* instr) = 0;
virtual void finalize_exports() = 0;
virtual bool do_process_outputs(nir_variable *output);