return nir;
}
+static int
+type_size_vec4(const struct glsl_type *type, bool bindless)
+{
+ return glsl_count_attribute_slots(type, false);
+}
+
static void
-v3dv_nir_lower_fs_inputs(nir_shader *nir)
+lower_fs_inputs(nir_shader *nir)
{
- /* FIXME: stub */
+ nir_assign_io_var_locations(nir, nir_var_shader_in, &nir->num_inputs,
+ MESA_SHADER_FRAGMENT);
+
+ NIR_PASS_V(nir, nir_lower_io, nir_var_shader_in, type_size_vec4, 0);
}
-static int
-type_size_vec4(const struct glsl_type *type, bool bindless)
+static void
+lower_vs_inputs(struct nir_shader *nir)
{
- return glsl_count_attribute_slots(type, false);
+ nir_assign_io_var_locations(nir, nir_var_shader_in, &nir->num_inputs,
+ MESA_SHADER_VERTEX);
+
+ /* FIXME: if we call the following pass, we get a crash later. Likely
+ * because it overlaps with v3d_nir_lower_io. Need further research though.
+ */
+ /* NIR_PASS_V(nir, nir_lower_io, nir_var_shader_in, type_size_vec4, 0); */
}
static void
-v3dv_nir_lower_fs_outputs(nir_shader *nir)
+lower_fs_outputs(nir_shader *nir)
{
NIR_PASS_V(nir, nir_lower_io, nir_var_shader_out, type_size_vec4, 0);
}
static void
+lower_vs_outputs(nir_shader *nir)
+{
+ nir_assign_io_var_locations(nir, nir_var_shader_out, &nir->num_outputs,
+ MESA_SHADER_FRAGMENT);
+
+ /* FIXME: if we call nir_lower_io, we get a crash later. Likely because it
+ * overlaps with v3d_nir_lower_io. Need further research though.
+ */
+ /* NIR_PASS_V(nir, nir_lower_io, nir_var_shader_out, type_size_vec4, 0); */
+}
+
+static void
shader_debug_output(const char *message, void *data)
{
/* FIXME: We probably don't want to debug anything extra here, and in fact
pCreateInfo->pInputAssemblyState;
pipeline->vs->topology = vk_to_pipe_prim_type[ia_info->topology];
+ lower_vs_inputs(p_stage->nir);
+ lower_vs_outputs(p_stage->nir);
+
/* Note that at this point we would compile twice, one for vs and
* other for vs_bin. For now we are maintaining two pipeline_stage
* and two keys. Eventually we could reuse the key.
/* FIXME: create a per-build method with all the lowering
* needed. perhaps move to shader_compile_module_to_nir? */
- v3dv_nir_lower_fs_inputs(p_stage->nir);
- v3dv_nir_lower_fs_outputs(p_stage->nir);
+ lower_fs_inputs(p_stage->nir);
+ lower_fs_outputs(p_stage->nir);
compile_pipeline_stage(pipeline->fs);
break;