nir: Move nir_lower_uniforms_to_ubo to compiler/nir.

The nir_lower_uniforms_to_ubo function is useful outside of
mesa/state_tracker, and in fact is needed to produce NIR for
drivers that have the PIPE_CAP_PACKED_UNIFORMS capability.

Signed-Off-By: Timur Kristóf <timur.kristof@gmail.com>
Tested-by: Andre Heider <a.heider@gmail.com>
Tested-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Timur Kristóf 2019-02-08 22:36:37 +01:00 committed by Eric Anholt
parent 4dba72c4b3
commit 909d1f50f3
9 changed files with 10 additions and 11 deletions

View File

@ -262,6 +262,7 @@ NIR_FILES = \
nir/nir_lower_tex.c \
nir/nir_lower_to_source_mods.c \
nir/nir_lower_two_sided_color.c \
nir/nir_lower_uniforms_to_ubo.c \
nir/nir_lower_vars_to_ssa.c \
nir/nir_lower_var_copies.c \
nir/nir_lower_vec_to_movs.c \

View File

@ -150,6 +150,7 @@ files_libnir = files(
'nir_lower_wpos_center.c',
'nir_lower_wpos_ytransform.c',
'nir_lower_bit_size.c',
'nir_lower_uniforms_to_ubo.c',
'nir_metadata.c',
'nir_move_load_const.c',
'nir_move_vec_src_uses_to_dest.c',

View File

@ -3036,6 +3036,8 @@ void nir_lower_io_arrays_to_elements_no_indirects(nir_shader *shader,
void nir_lower_io_to_scalar(nir_shader *shader, nir_variable_mode mask);
void nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask);
bool nir_lower_uniforms_to_ubo(nir_shader *shader);
typedef struct nir_lower_subgroups_options {
uint8_t subgroup_size;
uint8_t ballot_bit_size;

View File

@ -29,11 +29,8 @@
* point by 1.
*/
#include "compiler/nir/nir.h"
#include "compiler/nir/nir_builder.h"
#include "st_nir.h"
#include "program/prog_parameter.h"
#include "nir.h"
#include "nir_builder.h"
static bool
lower_instr(nir_intrinsic_instr *instr, nir_builder *b)
@ -74,7 +71,7 @@ lower_instr(nir_intrinsic_instr *instr, nir_builder *b)
}
bool
st_nir_lower_uniforms_to_ubo(nir_shader *shader)
nir_lower_uniforms_to_ubo(nir_shader *shader)
{
bool progress = false;
@ -98,3 +95,4 @@ st_nir_lower_uniforms_to_ubo(nir_shader *shader)
return progress;
}

View File

@ -540,7 +540,6 @@ STATETRACKER_FILES = \
state_tracker/st_nir_builtins.c \
state_tracker/st_nir_lower_builtin.c \
state_tracker/st_nir_lower_tex_src_plane.c \
state_tracker/st_nir_lower_uniforms_to_ubo.c \
state_tracker/st_pbo.c \
state_tracker/st_pbo.h \
state_tracker/st_program.c \

View File

@ -584,7 +584,6 @@ files_libmesa_gallium = files(
'state_tracker/st_nir_builtins.c',
'state_tracker/st_nir_lower_builtin.c',
'state_tracker/st_nir_lower_tex_src_plane.c',
'state_tracker/st_nir_lower_uniforms_to_ubo.c',
'state_tracker/st_pbo.c',
'state_tracker/st_pbo.h',
'state_tracker/st_program.c',

View File

@ -991,7 +991,7 @@ st_finalize_nir(struct st_context *st, struct gl_program *prog,
if (st->ctx->Const.PackedDriverUniformStorage) {
NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_type_dword_size,
(nir_lower_io_options)0);
NIR_PASS_V(nir, st_nir_lower_uniforms_to_ubo);
NIR_PASS_V(nir, nir_lower_uniforms_to_ubo);
}
st_nir_lower_samplers(screen, nir, shader_program, prog);

View File

@ -36,7 +36,6 @@ struct nir_shader;
void st_nir_lower_builtin(struct nir_shader *shader);
void st_nir_lower_tex_src_plane(struct nir_shader *shader, unsigned free_slots,
unsigned lower_2plane, unsigned lower_3plane);
bool st_nir_lower_uniforms_to_ubo(struct nir_shader *shader);
void st_nir_lower_wpos_ytransform(struct nir_shader *nir,
struct gl_program *prog,

View File

@ -66,7 +66,7 @@ st_nir_finish_builtin_shader(struct st_context *st,
if (st->ctx->Const.PackedDriverUniformStorage) {
NIR_PASS_V(nir, nir_lower_io, nir_var_uniform, st_glsl_type_dword_size,
(nir_lower_io_options)0);
NIR_PASS_V(nir, st_nir_lower_uniforms_to_ubo);
NIR_PASS_V(nir, nir_lower_uniforms_to_ubo);
}
struct pipe_shader_state state = {