mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
v3dv/pipeline: lower fs/vs inputs/outputs
For now mostly call to nir_assign_io_var_locations Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
parent
45875065fd
commit
8c4fcc2bf7
1 changed files with 39 additions and 9 deletions
|
|
@ -241,12 +241,6 @@ shader_module_compile_to_nir(struct v3dv_device *device,
|
|||
return nir;
|
||||
}
|
||||
|
||||
static void
|
||||
v3dv_nir_lower_fs_inputs(nir_shader *nir)
|
||||
{
|
||||
/* FIXME: stub */
|
||||
}
|
||||
|
||||
static int
|
||||
type_size_vec4(const struct glsl_type *type, bool bindless)
|
||||
{
|
||||
|
|
@ -254,11 +248,44 @@ type_size_vec4(const struct glsl_type *type, bool bindless)
|
|||
}
|
||||
|
||||
static void
|
||||
v3dv_nir_lower_fs_outputs(nir_shader *nir)
|
||||
lower_fs_inputs(nir_shader *nir)
|
||||
{
|
||||
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 void
|
||||
lower_vs_inputs(struct nir_shader *nir)
|
||||
{
|
||||
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
|
||||
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)
|
||||
{
|
||||
|
|
@ -655,6 +682,9 @@ pipeline_compile_graphics(struct v3dv_pipeline *pipeline,
|
|||
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.
|
||||
|
|
@ -673,8 +703,8 @@ pipeline_compile_graphics(struct v3dv_pipeline *pipeline,
|
|||
|
||||
/* 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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue