/* SPIR-V programs use a NIR linker */
if (shProg->data->spirv) {
- if (!gl_nir_link_uniforms(ctx, shProg))
- return false;
-
- gl_nir_link_assign_atomic_counter_resources(ctx, shProg);
- gl_nir_link_assign_xfb_resources(ctx, shProg);
+ static const gl_nir_linker_options opts = {
+ .fill_parameters = false,
+ };
+ if (!gl_nir_link_spirv(ctx, shProg, &opts))
+ return GL_FALSE;
}
for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders); stage++) {
}
if (brw->precompile && !brw_shader_precompile(ctx, shProg))
- return false;
+ return GL_FALSE;
/* SPIR-V programs build its resource list from linked NIR shaders. */
if (!shProg->data->spirv)
- build_program_resource_list(ctx, shProg);
+ build_program_resource_list(ctx, shProg, false);
else
- nir_build_program_resource_list(ctx, shProg);
+ nir_build_program_resource_list(ctx, shProg, true);
+
+ _mesa_create_program_resource_hash(shProg);
for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders); stage++) {
struct gl_linked_shader *shader = shProg->_LinkedShaders[stage];
shader->ir = NULL;
}
- return true;
+ return GL_TRUE;
}