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>tags/19.1-branchpoint
@@ -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 \ |
@@ -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', |
@@ -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; |
@@ -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; | |||
} | |||
@@ -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 \ |
@@ -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', |
@@ -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); |
@@ -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, |
@@ -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 = { |