intel/compiler: Remove final_program_size from brw_compile_*
The caller can now use brw_stage_prog_data::program_size which is set by the brw_compile_* functions. Cc: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -162,8 +162,7 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx,
|
|||||||
struct nir_shader *nir,
|
struct nir_shader *nir,
|
||||||
struct brw_wm_prog_key *wm_key,
|
struct brw_wm_prog_key *wm_key,
|
||||||
bool use_repclear,
|
bool use_repclear,
|
||||||
struct brw_wm_prog_data *wm_prog_data,
|
struct brw_wm_prog_data *wm_prog_data)
|
||||||
unsigned *program_size)
|
|
||||||
{
|
{
|
||||||
const struct brw_compiler *compiler = blorp->compiler;
|
const struct brw_compiler *compiler = blorp->compiler;
|
||||||
|
|
||||||
@@ -194,7 +193,7 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx,
|
|||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_fs(compiler, blorp->driver_ctx, mem_ctx, wm_key,
|
brw_compile_fs(compiler, blorp->driver_ctx, mem_ctx, wm_key,
|
||||||
wm_prog_data, nir, NULL, -1, -1, false, use_repclear,
|
wm_prog_data, nir, NULL, -1, -1, false, use_repclear,
|
||||||
NULL, program_size, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
@@ -202,8 +201,7 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx,
|
|||||||
const unsigned *
|
const unsigned *
|
||||||
blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
||||||
struct nir_shader *nir,
|
struct nir_shader *nir,
|
||||||
struct brw_vs_prog_data *vs_prog_data,
|
struct brw_vs_prog_data *vs_prog_data)
|
||||||
unsigned *program_size)
|
|
||||||
{
|
{
|
||||||
const struct brw_compiler *compiler = blorp->compiler;
|
const struct brw_compiler *compiler = blorp->compiler;
|
||||||
|
|
||||||
@@ -225,7 +223,7 @@ blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
|||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_vs(compiler, blorp->driver_ctx, mem_ctx,
|
brw_compile_vs(compiler, blorp->driver_ctx, mem_ctx,
|
||||||
&vs_key, vs_prog_data, nir,
|
&vs_key, vs_prog_data, nir,
|
||||||
false, -1, program_size, NULL);
|
false, -1, NULL);
|
||||||
|
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
@@ -1308,7 +1308,6 @@ brw_blorp_get_blit_kernel(struct blorp_context *blorp,
|
|||||||
void *mem_ctx = ralloc_context(NULL);
|
void *mem_ctx = ralloc_context(NULL);
|
||||||
|
|
||||||
const unsigned *program;
|
const unsigned *program;
|
||||||
unsigned program_size;
|
|
||||||
struct brw_wm_prog_data prog_data;
|
struct brw_wm_prog_data prog_data;
|
||||||
|
|
||||||
nir_shader *nir = brw_blorp_build_nir_shader(blorp, mem_ctx, prog_key);
|
nir_shader *nir = brw_blorp_build_nir_shader(blorp, mem_ctx, prog_key);
|
||||||
@@ -1322,11 +1321,11 @@ brw_blorp_get_blit_kernel(struct blorp_context *blorp,
|
|||||||
wm_key.multisample_fbo = prog_key->rt_samples > 1;
|
wm_key.multisample_fbo = prog_key->rt_samples > 1;
|
||||||
|
|
||||||
program = blorp_compile_fs(blorp, mem_ctx, nir, &wm_key, false,
|
program = blorp_compile_fs(blorp, mem_ctx, nir, &wm_key, false,
|
||||||
&prog_data, &program_size);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(blorp, prog_key, sizeof(*prog_key),
|
blorp->upload_shader(blorp, prog_key, sizeof(*prog_key),
|
||||||
program, program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
|
|
||||||
|
@@ -75,14 +75,13 @@ blorp_params_get_clear_kernel(struct blorp_context *blorp,
|
|||||||
brw_blorp_init_wm_prog_key(&wm_key);
|
brw_blorp_init_wm_prog_key(&wm_key);
|
||||||
|
|
||||||
struct brw_wm_prog_data prog_data;
|
struct brw_wm_prog_data prog_data;
|
||||||
unsigned program_size;
|
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, use_replicated_data,
|
blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, use_replicated_data,
|
||||||
&prog_data, &program_size);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
||||||
program, program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
|
|
||||||
@@ -167,13 +166,12 @@ blorp_params_get_layer_offset_vs(struct blorp_context *blorp,
|
|||||||
struct brw_vs_prog_data vs_prog_data;
|
struct brw_vs_prog_data vs_prog_data;
|
||||||
memset(&vs_prog_data, 0, sizeof(vs_prog_data));
|
memset(&vs_prog_data, 0, sizeof(vs_prog_data));
|
||||||
|
|
||||||
unsigned program_size;
|
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
blorp_compile_vs(blorp, mem_ctx, b.shader, &vs_prog_data, &program_size);
|
blorp_compile_vs(blorp, mem_ctx, b.shader, &vs_prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
||||||
program, program_size,
|
program, vs_prog_data.base.base.program_size,
|
||||||
&vs_prog_data.base.base, sizeof(vs_prog_data),
|
&vs_prog_data.base.base, sizeof(vs_prog_data),
|
||||||
¶ms->vs_prog_kernel, ¶ms->vs_prog_data);
|
¶ms->vs_prog_kernel, ¶ms->vs_prog_data);
|
||||||
|
|
||||||
@@ -864,14 +862,13 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_context *blorp,
|
|||||||
wm_key.multisample_fbo = true;
|
wm_key.multisample_fbo = true;
|
||||||
|
|
||||||
struct brw_wm_prog_data prog_data;
|
struct brw_wm_prog_data prog_data;
|
||||||
unsigned program_size;
|
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, false,
|
blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, false,
|
||||||
&prog_data, &program_size);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(blorp, &blorp_key, sizeof(blorp_key),
|
||||||
program, program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
|
|
||||||
|
@@ -342,14 +342,12 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx,
|
|||||||
struct nir_shader *nir,
|
struct nir_shader *nir,
|
||||||
struct brw_wm_prog_key *wm_key,
|
struct brw_wm_prog_key *wm_key,
|
||||||
bool use_repclear,
|
bool use_repclear,
|
||||||
struct brw_wm_prog_data *wm_prog_data,
|
struct brw_wm_prog_data *wm_prog_data);
|
||||||
unsigned *program_size);
|
|
||||||
|
|
||||||
const unsigned *
|
const unsigned *
|
||||||
blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
||||||
struct nir_shader *nir,
|
struct nir_shader *nir,
|
||||||
struct brw_vs_prog_data *vs_prog_data,
|
struct brw_vs_prog_data *vs_prog_data);
|
||||||
unsigned *program_size);
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
blorp_ensure_sf_program(struct blorp_context *blorp,
|
blorp_ensure_sf_program(struct blorp_context *blorp,
|
||||||
|
@@ -1100,7 +1100,6 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
const struct nir_shader *shader,
|
const struct nir_shader *shader,
|
||||||
bool use_legacy_snorm_formula,
|
bool use_legacy_snorm_formula,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1116,7 +1115,6 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
struct brw_tcs_prog_data *prog_data,
|
struct brw_tcs_prog_data *prog_data,
|
||||||
const struct nir_shader *nir,
|
const struct nir_shader *nir,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1133,7 +1131,6 @@ brw_compile_tes(const struct brw_compiler *compiler, void *log_data,
|
|||||||
const struct nir_shader *shader,
|
const struct nir_shader *shader,
|
||||||
struct gl_program *prog,
|
struct gl_program *prog,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1149,7 +1146,6 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
const struct nir_shader *shader,
|
const struct nir_shader *shader,
|
||||||
struct gl_program *prog,
|
struct gl_program *prog,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1200,7 +1196,6 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
int shader_time_index16,
|
int shader_time_index16,
|
||||||
bool allow_spilling,
|
bool allow_spilling,
|
||||||
bool use_rep_send, struct brw_vue_map *vue_map,
|
bool use_rep_send, struct brw_vue_map *vue_map,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1215,7 +1210,6 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
struct brw_cs_prog_data *prog_data,
|
struct brw_cs_prog_data *prog_data,
|
||||||
const struct nir_shader *shader,
|
const struct nir_shader *shader,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str);
|
char **error_str);
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
|
@@ -6542,7 +6542,6 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
int shader_time_index8, int shader_time_index16,
|
int shader_time_index8, int shader_time_index16,
|
||||||
bool allow_spilling,
|
bool allow_spilling,
|
||||||
bool use_rep_send, struct brw_vue_map *vue_map,
|
bool use_rep_send, struct brw_vue_map *vue_map,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
const struct gen_device_info *devinfo = compiler->devinfo;
|
const struct gen_device_info *devinfo = compiler->devinfo;
|
||||||
@@ -6691,9 +6690,7 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
prog_data->reg_blocks_0 = brw_register_blocks(simd16_grf_used);
|
prog_data->reg_blocks_0 = brw_register_blocks(simd16_grf_used);
|
||||||
}
|
}
|
||||||
|
|
||||||
const unsigned *assembly = g.get_assembly(final_assembly_size);
|
return g.get_assembly(&prog_data->base.program_size);
|
||||||
prog_data->base.program_size = *final_assembly_size;
|
|
||||||
return assembly;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fs_reg *
|
fs_reg *
|
||||||
@@ -6780,7 +6777,6 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
struct brw_cs_prog_data *prog_data,
|
struct brw_cs_prog_data *prog_data,
|
||||||
const nir_shader *src_shader,
|
const nir_shader *src_shader,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
|
nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
|
||||||
@@ -6892,9 +6888,7 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
|
|
||||||
g.generate_code(cfg, prog_data->simd_size);
|
g.generate_code(cfg, prog_data->simd_size);
|
||||||
|
|
||||||
const unsigned *assembly = g.get_assembly(final_assembly_size);
|
return g.get_assembly(&prog_data->base.program_size);
|
||||||
prog_data->base.program_size = *final_assembly_size;
|
|
||||||
return assembly;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1157,7 +1157,6 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
const nir_shader *src_shader,
|
const nir_shader *src_shader,
|
||||||
struct gl_program *prog,
|
struct gl_program *prog,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
const struct gen_device_info *devinfo = compiler->devinfo;
|
const struct gen_device_info *devinfo = compiler->devinfo;
|
||||||
@@ -1271,7 +1270,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
|
|
||||||
assembly = g.get_assembly(final_assembly_size);
|
assembly = g.get_assembly(&prog_data->base.base.program_size);
|
||||||
} else {
|
} else {
|
||||||
brw::vec4_tes_visitor v(compiler, log_data, key, prog_data,
|
brw::vec4_tes_visitor v(compiler, log_data, key, prog_data,
|
||||||
nir, mem_ctx, shader_time_index);
|
nir, mem_ctx, shader_time_index);
|
||||||
@@ -1286,9 +1285,8 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, nir,
|
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, nir,
|
||||||
&prog_data->base, v.cfg,
|
&prog_data->base, v.cfg,
|
||||||
final_assembly_size);
|
&prog_data->base.base.program_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return assembly;
|
return assembly;
|
||||||
}
|
}
|
||||||
|
@@ -2741,7 +2741,6 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
const nir_shader *src_shader,
|
const nir_shader *src_shader,
|
||||||
bool use_legacy_snorm_formula,
|
bool use_legacy_snorm_formula,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_VERTEX];
|
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_VERTEX];
|
||||||
@@ -2880,7 +2879,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
g.enable_debug(debug_name);
|
g.enable_debug(debug_name);
|
||||||
}
|
}
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
assembly = g.get_assembly(final_assembly_size);
|
assembly = g.get_assembly(&prog_data->base.base.program_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!assembly) {
|
if (!assembly) {
|
||||||
@@ -2898,10 +2897,9 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
|
|
||||||
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx,
|
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx,
|
||||||
shader, &prog_data->base, v.cfg,
|
shader, &prog_data->base, v.cfg,
|
||||||
final_assembly_size);
|
&prog_data->base.base.program_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return assembly;
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -618,7 +618,6 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
const nir_shader *src_shader,
|
const nir_shader *src_shader,
|
||||||
struct gl_program *prog,
|
struct gl_program *prog,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
struct brw_gs_compile c;
|
struct brw_gs_compile c;
|
||||||
@@ -868,9 +867,7 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
g.enable_debug(name);
|
g.enable_debug(name);
|
||||||
}
|
}
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
const unsigned *ret = g.get_assembly(final_assembly_size);
|
return g.get_assembly(&prog_data->base.base.program_size);
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -899,12 +896,10 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
if (v.run()) {
|
if (v.run()) {
|
||||||
/* Success! Backup is not needed */
|
/* Success! Backup is not needed */
|
||||||
ralloc_free(param);
|
ralloc_free(param);
|
||||||
const unsigned *ret =
|
return brw_vec4_generate_assembly(compiler, log_data, mem_ctx,
|
||||||
brw_vec4_generate_assembly(compiler, log_data, mem_ctx, shader,
|
shader, &prog_data->base, v.cfg,
|
||||||
&prog_data->base, v.cfg,
|
&prog_data->base.base.
|
||||||
final_assembly_size);
|
program_size);
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return ret;
|
|
||||||
} else {
|
} else {
|
||||||
/* These variables could be modified by the execution of the GS
|
/* These variables could be modified by the execution of the GS
|
||||||
* visitor if it packed the uniforms in the push constant buffer.
|
* visitor if it packed the uniforms in the push constant buffer.
|
||||||
@@ -968,11 +963,10 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
} else {
|
} else {
|
||||||
ret = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, shader,
|
ret = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, shader,
|
||||||
&prog_data->base, gs->cfg,
|
&prog_data->base, gs->cfg,
|
||||||
final_assembly_size);
|
&prog_data->base.base.program_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete gs;
|
delete gs;
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -382,7 +382,6 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
struct brw_tcs_prog_data *prog_data,
|
struct brw_tcs_prog_data *prog_data,
|
||||||
const nir_shader *src_shader,
|
const nir_shader *src_shader,
|
||||||
int shader_time_index,
|
int shader_time_index,
|
||||||
unsigned *final_assembly_size,
|
|
||||||
char **error_str)
|
char **error_str)
|
||||||
{
|
{
|
||||||
const struct gen_device_info *devinfo = compiler->devinfo;
|
const struct gen_device_info *devinfo = compiler->devinfo;
|
||||||
@@ -488,7 +487,7 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
|
|
||||||
assembly = g.get_assembly(final_assembly_size);
|
assembly = g.get_assembly(&prog_data->base.base.program_size);
|
||||||
} else {
|
} else {
|
||||||
vec4_tcs_visitor v(compiler, log_data, key, prog_data,
|
vec4_tcs_visitor v(compiler, log_data, key, prog_data,
|
||||||
nir, mem_ctx, shader_time_index, &input_vue_map);
|
nir, mem_ctx, shader_time_index, &input_vue_map);
|
||||||
@@ -504,10 +503,9 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, nir,
|
assembly = brw_vec4_generate_assembly(compiler, log_data, mem_ctx, nir,
|
||||||
&prog_data->base, v.cfg,
|
&prog_data->base, v.cfg,
|
||||||
final_assembly_size);
|
&prog_data->base.base.program_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
prog_data->base.base.program_size = *final_assembly_size;
|
|
||||||
return assembly;
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -535,15 +535,15 @@ anv_pipeline_compile_vs(struct anv_pipeline *pipeline,
|
|||||||
nir->info.outputs_written,
|
nir->info.outputs_written,
|
||||||
nir->info.separate_shader);
|
nir->info.separate_shader);
|
||||||
|
|
||||||
unsigned code_size;
|
|
||||||
const unsigned *shader_code =
|
const unsigned *shader_code =
|
||||||
brw_compile_vs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
brw_compile_vs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
||||||
false, -1, &code_size, NULL);
|
false, -1, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned code_size = prog_data.base.base.program_size;
|
||||||
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
&prog_data.base.base, sizeof(prog_data),
|
&prog_data.base.base, sizeof(prog_data),
|
||||||
@@ -694,18 +694,18 @@ anv_pipeline_compile_tcs_tes(struct anv_pipeline *pipeline,
|
|||||||
tes_key.inputs_read = tcs_key.outputs_written;
|
tes_key.inputs_read = tcs_key.outputs_written;
|
||||||
tes_key.patch_inputs_read = tcs_key.patch_outputs_written;
|
tes_key.patch_inputs_read = tcs_key.patch_outputs_written;
|
||||||
|
|
||||||
unsigned code_size;
|
|
||||||
const int shader_time_index = -1;
|
const int shader_time_index = -1;
|
||||||
const unsigned *shader_code;
|
const unsigned *shader_code;
|
||||||
|
|
||||||
shader_code =
|
shader_code =
|
||||||
brw_compile_tcs(compiler, NULL, mem_ctx, &tcs_key, &tcs_prog_data,
|
brw_compile_tcs(compiler, NULL, mem_ctx, &tcs_key, &tcs_prog_data,
|
||||||
tcs_nir, shader_time_index, &code_size, NULL);
|
tcs_nir, shader_time_index, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned code_size = tcs_prog_data.base.base.program_size;
|
||||||
tcs_bin = anv_pipeline_upload_kernel(pipeline, cache,
|
tcs_bin = anv_pipeline_upload_kernel(pipeline, cache,
|
||||||
tcs_sha1, sizeof(tcs_sha1),
|
tcs_sha1, sizeof(tcs_sha1),
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
@@ -720,12 +720,13 @@ anv_pipeline_compile_tcs_tes(struct anv_pipeline *pipeline,
|
|||||||
shader_code =
|
shader_code =
|
||||||
brw_compile_tes(compiler, NULL, mem_ctx, &tes_key,
|
brw_compile_tes(compiler, NULL, mem_ctx, &tes_key,
|
||||||
&tcs_prog_data.base.vue_map, &tes_prog_data, tes_nir,
|
&tcs_prog_data.base.vue_map, &tes_prog_data, tes_nir,
|
||||||
NULL, shader_time_index, &code_size, NULL);
|
NULL, shader_time_index, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
code_size = tes_prog_data.base.base.program_size;
|
||||||
tes_bin = anv_pipeline_upload_kernel(pipeline, cache,
|
tes_bin = anv_pipeline_upload_kernel(pipeline, cache,
|
||||||
tes_sha1, sizeof(tes_sha1),
|
tes_sha1, sizeof(tes_sha1),
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
@@ -797,16 +798,16 @@ anv_pipeline_compile_gs(struct anv_pipeline *pipeline,
|
|||||||
nir->info.outputs_written,
|
nir->info.outputs_written,
|
||||||
nir->info.separate_shader);
|
nir->info.separate_shader);
|
||||||
|
|
||||||
unsigned code_size;
|
|
||||||
const unsigned *shader_code =
|
const unsigned *shader_code =
|
||||||
brw_compile_gs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
brw_compile_gs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
||||||
NULL, -1, &code_size, NULL);
|
NULL, -1, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: SIMD8 GS */
|
/* TODO: SIMD8 GS */
|
||||||
|
const unsigned code_size = prog_data.base.base.program_size;
|
||||||
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
&prog_data.base.base, sizeof(prog_data),
|
&prog_data.base.base, sizeof(prog_data),
|
||||||
@@ -921,15 +922,15 @@ anv_pipeline_compile_fs(struct anv_pipeline *pipeline,
|
|||||||
|
|
||||||
anv_fill_binding_table(&prog_data.base, num_rts);
|
anv_fill_binding_table(&prog_data.base, num_rts);
|
||||||
|
|
||||||
unsigned code_size;
|
|
||||||
const unsigned *shader_code =
|
const unsigned *shader_code =
|
||||||
brw_compile_fs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
brw_compile_fs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
||||||
NULL, -1, -1, true, false, NULL, &code_size, NULL);
|
NULL, -1, -1, true, false, NULL, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned code_size = prog_data.base.program_size;
|
||||||
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
@@ -993,15 +994,15 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,
|
|||||||
|
|
||||||
anv_fill_binding_table(&prog_data.base, 1);
|
anv_fill_binding_table(&prog_data.base, 1);
|
||||||
|
|
||||||
unsigned code_size;
|
|
||||||
const unsigned *shader_code =
|
const unsigned *shader_code =
|
||||||
brw_compile_cs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
brw_compile_cs(compiler, NULL, mem_ctx, &key, &prog_data, nir,
|
||||||
-1, &code_size, NULL);
|
-1, NULL);
|
||||||
if (shader_code == NULL) {
|
if (shader_code == NULL) {
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const unsigned code_size = prog_data.base.program_size;
|
||||||
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
bin = anv_pipeline_upload_kernel(pipeline, cache, sha1, 20,
|
||||||
shader_code, code_size,
|
shader_code, code_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
|
@@ -55,7 +55,6 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
|||||||
const struct gen_device_info *devinfo = &brw->screen->devinfo;
|
const struct gen_device_info *devinfo = &brw->screen->devinfo;
|
||||||
const GLuint *program;
|
const GLuint *program;
|
||||||
void *mem_ctx = ralloc_context(NULL);
|
void *mem_ctx = ralloc_context(NULL);
|
||||||
GLuint program_size;
|
|
||||||
struct brw_cs_prog_data prog_data;
|
struct brw_cs_prog_data prog_data;
|
||||||
bool start_busy = false;
|
bool start_busy = false;
|
||||||
double start_time = 0;
|
double start_time = 0;
|
||||||
@@ -93,7 +92,7 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
|||||||
char *error_str;
|
char *error_str;
|
||||||
program = brw_compile_cs(brw->screen->compiler, brw, mem_ctx, key,
|
program = brw_compile_cs(brw->screen->compiler, brw, mem_ctx, key,
|
||||||
&prog_data, cp->program.nir, st_index,
|
&prog_data, cp->program.nir, st_index,
|
||||||
&program_size, &error_str);
|
&error_str);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
cp->program.sh.data->LinkStatus = linking_failure;
|
cp->program.sh.data->LinkStatus = linking_failure;
|
||||||
ralloc_strcat(&cp->program.sh.data->InfoLog, error_str);
|
ralloc_strcat(&cp->program.sh.data->InfoLog, error_str);
|
||||||
@@ -144,7 +143,7 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
|||||||
ralloc_steal(NULL, prog_data.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_CS_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_CS_PROG,
|
||||||
key, sizeof(*key),
|
key, sizeof(*key),
|
||||||
program, program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&brw->cs.base.prog_offset, &brw->cs.base.prog_data);
|
&brw->cs.base.prog_offset, &brw->cs.base.prog_data);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
|
@@ -112,12 +112,11 @@ brw_codegen_gs_prog(struct brw_context *brw,
|
|||||||
start_time = get_time();
|
start_time = get_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned program_size;
|
|
||||||
char *error_str;
|
char *error_str;
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_gs(brw->screen->compiler, brw, mem_ctx, key,
|
brw_compile_gs(brw->screen->compiler, brw, mem_ctx, key,
|
||||||
&prog_data, gp->program.nir, &gp->program,
|
&prog_data, gp->program.nir, &gp->program,
|
||||||
st_index, &program_size, &error_str);
|
st_index, &error_str);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
ralloc_strcat(&gp->program.sh.data->InfoLog, error_str);
|
ralloc_strcat(&gp->program.sh.data->InfoLog, error_str);
|
||||||
_mesa_problem(NULL, "Failed to compile geometry shader: %s\n", error_str);
|
_mesa_problem(NULL, "Failed to compile geometry shader: %s\n", error_str);
|
||||||
@@ -147,7 +146,7 @@ brw_codegen_gs_prog(struct brw_context *brw,
|
|||||||
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_GS_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_GS_PROG,
|
||||||
key, sizeof(*key),
|
key, sizeof(*key),
|
||||||
program, program_size,
|
program, prog_data.base.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&stage_state->prog_offset, &brw->gs.base.prog_data);
|
&stage_state->prog_offset, &brw->gs.base.prog_data);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
|
@@ -226,11 +226,10 @@ brw_codegen_tcs_prog(struct brw_context *brw, struct brw_program *tcp,
|
|||||||
start_time = get_time();
|
start_time = get_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned program_size;
|
|
||||||
char *error_str;
|
char *error_str;
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_tcs(compiler, brw, mem_ctx, key, &prog_data, nir, st_index,
|
brw_compile_tcs(compiler, brw, mem_ctx, key, &prog_data, nir, st_index,
|
||||||
&program_size, &error_str);
|
&error_str);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (tep) {
|
if (tep) {
|
||||||
tep->program.sh.data->LinkStatus = linking_failure;
|
tep->program.sh.data->LinkStatus = linking_failure;
|
||||||
@@ -268,7 +267,7 @@ brw_codegen_tcs_prog(struct brw_context *brw, struct brw_program *tcp,
|
|||||||
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_TCS_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_TCS_PROG,
|
||||||
key, sizeof(*key),
|
key, sizeof(*key),
|
||||||
program, program_size,
|
program, prog_data.base.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&stage_state->prog_offset, &brw->tcs.base.prog_data);
|
&stage_state->prog_offset, &brw->tcs.base.prog_data);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
|
@@ -101,11 +101,10 @@ brw_codegen_tes_prog(struct brw_context *brw,
|
|||||||
brw_compute_tess_vue_map(&input_vue_map, key->inputs_read,
|
brw_compute_tess_vue_map(&input_vue_map, key->inputs_read,
|
||||||
key->patch_inputs_read);
|
key->patch_inputs_read);
|
||||||
|
|
||||||
unsigned program_size;
|
|
||||||
char *error_str;
|
char *error_str;
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_tes(compiler, brw, mem_ctx, key, &input_vue_map, &prog_data,
|
brw_compile_tes(compiler, brw, mem_ctx, key, &input_vue_map, &prog_data,
|
||||||
nir, &tep->program, st_index, &program_size, &error_str);
|
nir, &tep->program, st_index, &error_str);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
tep->program.sh.data->LinkStatus = linking_failure;
|
tep->program.sh.data->LinkStatus = linking_failure;
|
||||||
ralloc_strcat(&tep->program.sh.data->InfoLog, error_str);
|
ralloc_strcat(&tep->program.sh.data->InfoLog, error_str);
|
||||||
@@ -138,7 +137,7 @@ brw_codegen_tes_prog(struct brw_context *brw,
|
|||||||
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_TES_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_TES_PROG,
|
||||||
key, sizeof(*key),
|
key, sizeof(*key),
|
||||||
program, program_size,
|
program, prog_data.base.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&stage_state->prog_offset, &brw->tes.base.prog_data);
|
&stage_state->prog_offset, &brw->tes.base.prog_data);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
|
@@ -159,7 +159,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
{
|
{
|
||||||
const struct brw_compiler *compiler = brw->screen->compiler;
|
const struct brw_compiler *compiler = brw->screen->compiler;
|
||||||
const struct gen_device_info *devinfo = &brw->screen->devinfo;
|
const struct gen_device_info *devinfo = &brw->screen->devinfo;
|
||||||
GLuint program_size;
|
|
||||||
const GLuint *program;
|
const GLuint *program;
|
||||||
struct brw_vs_prog_data prog_data;
|
struct brw_vs_prog_data prog_data;
|
||||||
struct brw_stage_prog_data *stage_prog_data = &prog_data.base.base;
|
struct brw_stage_prog_data *stage_prog_data = &prog_data.base.base;
|
||||||
@@ -223,7 +222,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
program = brw_compile_vs(compiler, brw, mem_ctx, key, &prog_data,
|
program = brw_compile_vs(compiler, brw, mem_ctx, key, &prog_data,
|
||||||
vp->program.nir,
|
vp->program.nir,
|
||||||
!_mesa_is_gles3(&brw->ctx),
|
!_mesa_is_gles3(&brw->ctx),
|
||||||
st_index, &program_size, &error_str);
|
st_index, &error_str);
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (!vp->program.is_arb_asm) {
|
if (!vp->program.is_arb_asm) {
|
||||||
vp->program.sh.data->LinkStatus = linking_failure;
|
vp->program.sh.data->LinkStatus = linking_failure;
|
||||||
@@ -256,10 +255,10 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
ralloc_steal(NULL, prog_data.base.base.param);
|
ralloc_steal(NULL, prog_data.base.base.param);
|
||||||
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_VS_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_VS_PROG,
|
||||||
key, sizeof(struct brw_vs_prog_key),
|
key, sizeof(struct brw_vs_prog_key),
|
||||||
program, program_size,
|
program, prog_data.base.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&brw->vs.base.prog_offset, &brw->vs.base.prog_data);
|
&brw->vs.base.prog_offset, &brw->vs.base.prog_data);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -141,7 +141,6 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
void *mem_ctx = ralloc_context(NULL);
|
void *mem_ctx = ralloc_context(NULL);
|
||||||
struct brw_wm_prog_data prog_data;
|
struct brw_wm_prog_data prog_data;
|
||||||
const GLuint *program;
|
const GLuint *program;
|
||||||
GLuint program_size;
|
|
||||||
bool start_busy = false;
|
bool start_busy = false;
|
||||||
double start_time = 0;
|
double start_time = 0;
|
||||||
|
|
||||||
@@ -185,7 +184,7 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
key, &prog_data, fp->program.nir,
|
key, &prog_data, fp->program.nir,
|
||||||
&fp->program, st_index8, st_index16,
|
&fp->program, st_index8, st_index16,
|
||||||
true, false, vue_map,
|
true, false, vue_map,
|
||||||
&program_size, &error_str);
|
&error_str);
|
||||||
|
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (!fp->program.is_arb_asm) {
|
if (!fp->program.is_arb_asm) {
|
||||||
@@ -222,7 +221,7 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
|||||||
ralloc_steal(NULL, prog_data.base.pull_param);
|
ralloc_steal(NULL, prog_data.base.pull_param);
|
||||||
brw_upload_cache(&brw->cache, BRW_CACHE_FS_PROG,
|
brw_upload_cache(&brw->cache, BRW_CACHE_FS_PROG,
|
||||||
key, sizeof(struct brw_wm_prog_key),
|
key, sizeof(struct brw_wm_prog_key),
|
||||||
program, program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data, sizeof(prog_data),
|
&prog_data, sizeof(prog_data),
|
||||||
&brw->wm.base.prog_offset, &brw->wm.base.prog_data);
|
&brw->wm.base.prog_offset, &brw->wm.base.prog_data);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user