glsl/nir: Fill in the Parameters in NIR linker

The parameter lists were not being created nor filled since i965
doesn't use them.  In Gallium they are used for uniform handling, so
add a way to fill them.

The gl_uniform_storage struct got two new fields that let us go

- from a Parameter to the matching UniformStorage and,
- from the variable to the *first* UniformStorage

without relying on names -- since they are optional for ARB_gl_spirv.
Later patches will make use of them.

v2: Do not fill parameters for i965.  (Timothy)
    Use uint32_t for the new attributes.  (Marek)

v3: Serialize the new fields.  (Timothy)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2019-08-21 11:08:48 -07:00
parent eea3aa25aa
commit 664e4a610d
5 changed files with 88 additions and 3 deletions

View File

@@ -32,7 +32,8 @@ struct gl_context;
struct gl_shader_program;
bool gl_nir_link_uniforms(struct gl_context *ctx,
struct gl_shader_program *prog);
struct gl_shader_program *prog,
bool fill_parameters);
void gl_nir_set_uniform_initializers(struct gl_context *ctx,
struct gl_shader_program *prog);