mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-19 16:40:36 +02:00
vk/compiler: mark inputs/outputs as read/written
This doesn't handle inputs and outputs larger than a vec4, but we plan to add a varyiing splitting/packing pass to handle those anyways.
This commit is contained in:
parent
8640dc12dc
commit
a841e2c747
1 changed files with 19 additions and 0 deletions
|
|
@ -950,6 +950,23 @@ anv_compile_shader_glsl(struct anv_compiler *compiler,
|
|||
program->NumShaders++;
|
||||
}
|
||||
|
||||
static void
|
||||
setup_nir_io(struct gl_program *prog,
|
||||
nir_shader *shader)
|
||||
{
|
||||
foreach_list_typed(nir_variable, var, node, &shader->inputs) {
|
||||
prog->InputsRead |= BITFIELD64_BIT(var->data.location);
|
||||
}
|
||||
|
||||
foreach_list_typed(nir_variable, var, node, &shader->outputs) {
|
||||
/* XXX glslang gives us this but we never use it */
|
||||
if (!strcmp(var->name, "gl_PerVertex"))
|
||||
continue;
|
||||
|
||||
prog->OutputsWritten |= BITFIELD64_BIT(var->data.location);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
anv_compile_shader_spirv(struct anv_compiler *compiler,
|
||||
struct gl_shader_program *program,
|
||||
|
|
@ -982,6 +999,8 @@ anv_compile_shader_spirv(struct anv_compiler *compiler,
|
|||
compiler->screen->devinfo,
|
||||
NULL, mesa_shader->Stage);
|
||||
|
||||
setup_nir_io(mesa_shader->Program, mesa_shader->Program->nir);
|
||||
|
||||
fail_if(mesa_shader->Program->nir == NULL,
|
||||
"failed to translate SPIR-V to NIR\n");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue