intel/fs,vec4: Stuff the constant data from NIR in the end of the program
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6244>
This commit is contained in:

committed by
Marge Bot

parent
91348d125d
commit
90b6745bc8
@@ -685,6 +685,9 @@ struct brw_stage_prog_data {
|
|||||||
|
|
||||||
unsigned program_size;
|
unsigned program_size;
|
||||||
|
|
||||||
|
unsigned const_data_size;
|
||||||
|
unsigned const_data_offset;
|
||||||
|
|
||||||
/** Does this program pull from any UBO or other constant buffers? */
|
/** Does this program pull from any UBO or other constant buffers? */
|
||||||
bool has_ubo_pull;
|
bool has_ubo_pull;
|
||||||
|
|
||||||
|
@@ -8784,6 +8784,8 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
stats = stats ? stats + 1 : NULL;
|
stats = stats ? stats + 1 : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g.add_const_data(shader->constant_data, shader->constant_data_size);
|
||||||
|
|
||||||
delete v8;
|
delete v8;
|
||||||
delete v16;
|
delete v16;
|
||||||
delete v32;
|
delete v32;
|
||||||
@@ -9167,6 +9169,8 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
v->performance_analysis.require(), stats);
|
v->performance_analysis.require(), stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g.add_const_data(src_shader->constant_data, src_shader->constant_data_size);
|
||||||
|
|
||||||
ret = g.get_assembly();
|
ret = g.get_assembly();
|
||||||
|
|
||||||
delete v8;
|
delete v8;
|
||||||
|
@@ -478,6 +478,7 @@ public:
|
|||||||
struct shader_stats shader_stats,
|
struct shader_stats shader_stats,
|
||||||
const brw::performance &perf,
|
const brw::performance &perf,
|
||||||
struct brw_compile_stats *stats);
|
struct brw_compile_stats *stats);
|
||||||
|
void add_const_data(void *data, unsigned size);
|
||||||
const unsigned *get_assembly();
|
const unsigned *get_assembly();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -2595,6 +2595,16 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width,
|
|||||||
return start_offset;
|
return start_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fs_generator::add_const_data(void *data, unsigned size)
|
||||||
|
{
|
||||||
|
assert(prog_data->const_data_size == 0);
|
||||||
|
if (size > 0) {
|
||||||
|
prog_data->const_data_size = size;
|
||||||
|
prog_data->const_data_offset = brw_append_data(p, data, size, 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const unsigned *
|
const unsigned *
|
||||||
fs_generator::get_assembly()
|
fs_generator::get_assembly()
|
||||||
{
|
{
|
||||||
|
@@ -1374,6 +1374,8 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
g.generate_code(v.cfg, 8, v.shader_stats,
|
g.generate_code(v.cfg, 8, v.shader_stats,
|
||||||
v.performance_analysis.require(), stats);
|
v.performance_analysis.require(), stats);
|
||||||
|
|
||||||
|
g.add_const_data(nir->constant_data, nir->constant_data_size);
|
||||||
|
|
||||||
assembly = g.get_assembly();
|
assembly = g.get_assembly();
|
||||||
} else {
|
} else {
|
||||||
brw::vec4_tes_visitor v(compiler, log_data, key, prog_data,
|
brw::vec4_tes_visitor v(compiler, log_data, key, prog_data,
|
||||||
|
@@ -3001,6 +3001,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
}
|
}
|
||||||
g.generate_code(v.cfg, 8, v.shader_stats,
|
g.generate_code(v.cfg, 8, v.shader_stats,
|
||||||
v.performance_analysis.require(), stats);
|
v.performance_analysis.require(), stats);
|
||||||
|
g.add_const_data(shader->constant_data, shader->constant_data_size);
|
||||||
assembly = g.get_assembly();
|
assembly = g.get_assembly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2281,5 +2281,12 @@ brw_vec4_generate_assembly(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
generate_code(p, compiler, log_data, nir, prog_data, cfg, perf, stats);
|
generate_code(p, compiler, log_data, nir, prog_data, cfg, perf, stats);
|
||||||
|
|
||||||
|
assert(prog_data->base.const_data_size == 0);
|
||||||
|
if (nir->constant_data_size > 0) {
|
||||||
|
prog_data->base.const_data_size = nir->constant_data_size;
|
||||||
|
prog_data->base.const_data_offset =
|
||||||
|
brw_append_data(p, nir->constant_data, nir->constant_data_size, 32);
|
||||||
|
}
|
||||||
|
|
||||||
return brw_get_program(p, &prog_data->base.program_size);
|
return brw_get_program(p, &prog_data->base.program_size);
|
||||||
}
|
}
|
||||||
|
@@ -867,6 +867,7 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
}
|
}
|
||||||
g.generate_code(v.cfg, 8, v.shader_stats,
|
g.generate_code(v.cfg, 8, v.shader_stats,
|
||||||
v.performance_analysis.require(), stats);
|
v.performance_analysis.require(), stats);
|
||||||
|
g.add_const_data(shader->constant_data, shader->constant_data_size);
|
||||||
return g.get_assembly();
|
return g.get_assembly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -483,6 +483,8 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
g.generate_code(v.cfg, 8, v.shader_stats,
|
g.generate_code(v.cfg, 8, v.shader_stats,
|
||||||
v.performance_analysis.require(), stats);
|
v.performance_analysis.require(), stats);
|
||||||
|
|
||||||
|
g.add_const_data(nir->constant_data, nir->constant_data_size);
|
||||||
|
|
||||||
assembly = g.get_assembly();
|
assembly = g.get_assembly();
|
||||||
} else {
|
} else {
|
||||||
vec4_tcs_visitor v(compiler, log_data, key, prog_data,
|
vec4_tcs_visitor v(compiler, log_data, key, prog_data,
|
||||||
|
Reference in New Issue
Block a user