intel/compiler: add new field for storing program size
This will be used by the on disk shader cache. v2: * Set in brw_compile_* rather than brw_codegen_*. (Jason) Signed-off-by: Timothy Arceri <timothy.arceri@collabora.com> [jordan.l.justen@intel.com: Only add to brw_stage_prog_data] Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Jordan Justen

parent
1edf0fe612
commit
540636045f
@@ -587,6 +587,8 @@ struct brw_stage_prog_data {
|
|||||||
unsigned total_scratch;
|
unsigned total_scratch;
|
||||||
unsigned total_shared;
|
unsigned total_shared;
|
||||||
|
|
||||||
|
unsigned program_size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register where the thread expects to find input data from the URB
|
* Register where the thread expects to find input data from the URB
|
||||||
* (typically uniforms, followed by vertex or fragment attributes).
|
* (typically uniforms, followed by vertex or fragment attributes).
|
||||||
|
@@ -6691,7 +6691,9 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
return g.get_assembly(final_assembly_size);
|
const unsigned *assembly = g.get_assembly(final_assembly_size);
|
||||||
|
prog_data->base.program_size = *final_assembly_size;
|
||||||
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs_reg *
|
fs_reg *
|
||||||
@@ -6890,7 +6892,9 @@ 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);
|
||||||
|
|
||||||
return g.get_assembly(final_assembly_size);
|
const unsigned *assembly = g.get_assembly(final_assembly_size);
|
||||||
|
prog_data->base.program_size = *final_assembly_size;
|
||||||
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1162,6 +1162,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
{
|
{
|
||||||
const struct gen_device_info *devinfo = compiler->devinfo;
|
const struct gen_device_info *devinfo = compiler->devinfo;
|
||||||
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_TESS_EVAL];
|
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_TESS_EVAL];
|
||||||
|
const unsigned *assembly;
|
||||||
|
|
||||||
nir_shader *nir = nir_shader_clone(mem_ctx, src_shader);
|
nir_shader *nir = nir_shader_clone(mem_ctx, src_shader);
|
||||||
nir->info.inputs_read = key->inputs_read;
|
nir->info.inputs_read = key->inputs_read;
|
||||||
@@ -1270,7 +1271,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
|
|
||||||
return g.get_assembly(final_assembly_size);
|
assembly = g.get_assembly(final_assembly_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);
|
||||||
@@ -1283,8 +1284,11 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||||||
if (unlikely(INTEL_DEBUG & DEBUG_TES))
|
if (unlikely(INTEL_DEBUG & DEBUG_TES))
|
||||||
v.dump_instructions();
|
v.dump_instructions();
|
||||||
|
|
||||||
return 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);
|
final_assembly_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prog_data->base.base.program_size = *final_assembly_size;
|
||||||
|
return assembly;
|
||||||
}
|
}
|
||||||
|
@@ -2901,6 +2901,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
final_assembly_size);
|
final_assembly_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prog_data->base.base.program_size = *final_assembly_size;
|
||||||
return assembly;
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -868,7 +868,9 @@ 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);
|
||||||
return g.get_assembly(final_assembly_size);
|
const unsigned *ret = g.get_assembly(final_assembly_size);
|
||||||
|
prog_data->base.base.program_size = *final_assembly_size;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -897,9 +899,12 @@ 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);
|
||||||
return brw_vec4_generate_assembly(compiler, log_data, mem_ctx,
|
const unsigned *ret =
|
||||||
shader, &prog_data->base, v.cfg,
|
brw_vec4_generate_assembly(compiler, log_data, mem_ctx, shader,
|
||||||
final_assembly_size);
|
&prog_data->base, v.cfg,
|
||||||
|
final_assembly_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.
|
||||||
@@ -967,6 +972,7 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete gs;
|
delete gs;
|
||||||
|
prog_data->base.base.program_size = *final_assembly_size;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -388,6 +388,7 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
const struct gen_device_info *devinfo = compiler->devinfo;
|
const struct gen_device_info *devinfo = compiler->devinfo;
|
||||||
struct brw_vue_prog_data *vue_prog_data = &prog_data->base;
|
struct brw_vue_prog_data *vue_prog_data = &prog_data->base;
|
||||||
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_TESS_CTRL];
|
const bool is_scalar = compiler->scalar_stage[MESA_SHADER_TESS_CTRL];
|
||||||
|
const unsigned *assembly;
|
||||||
|
|
||||||
nir_shader *nir = nir_shader_clone(mem_ctx, src_shader);
|
nir_shader *nir = nir_shader_clone(mem_ctx, src_shader);
|
||||||
nir->info.outputs_written = key->outputs_written;
|
nir->info.outputs_written = key->outputs_written;
|
||||||
@@ -487,7 +488,7 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
|
|
||||||
g.generate_code(v.cfg, 8);
|
g.generate_code(v.cfg, 8);
|
||||||
|
|
||||||
return g.get_assembly(final_assembly_size);
|
assembly = g.get_assembly(final_assembly_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);
|
||||||
@@ -501,10 +502,13 @@ brw_compile_tcs(const struct brw_compiler *compiler,
|
|||||||
v.dump_instructions();
|
v.dump_instructions();
|
||||||
|
|
||||||
|
|
||||||
return 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);
|
final_assembly_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prog_data->base.base.program_size = *final_assembly_size;
|
||||||
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user