intel/compiler: Add functions to get prog_data and prog_key sizes for a stage

v2:
 * Return unsigned instead of size_t. (Ken)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Jordan Justen
2017-10-21 01:30:13 -07:00
parent 05b1193361
commit f082d7f64f
2 changed files with 42 additions and 0 deletions

View File

@@ -168,3 +168,39 @@ brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo)
return compiler;
}
unsigned
brw_prog_data_size(gl_shader_stage stage)
{
STATIC_ASSERT(MESA_SHADER_VERTEX == 0);
STATIC_ASSERT(MESA_SHADER_TESS_CTRL == 1);
STATIC_ASSERT(MESA_SHADER_TESS_EVAL == 2);
STATIC_ASSERT(MESA_SHADER_GEOMETRY == 3);
STATIC_ASSERT(MESA_SHADER_FRAGMENT == 4);
STATIC_ASSERT(MESA_SHADER_COMPUTE == 5);
static const size_t stage_sizes[] = {
sizeof(struct brw_vs_prog_data),
sizeof(struct brw_tcs_prog_data),
sizeof(struct brw_tes_prog_data),
sizeof(struct brw_gs_prog_data),
sizeof(struct brw_wm_prog_data),
sizeof(struct brw_cs_prog_data),
};
assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_sizes));
return stage_sizes[stage];
}
unsigned
brw_prog_key_size(gl_shader_stage stage)
{
static const size_t stage_sizes[] = {
sizeof(struct brw_vs_prog_key),
sizeof(struct brw_tcs_prog_key),
sizeof(struct brw_tes_prog_key),
sizeof(struct brw_gs_prog_key),
sizeof(struct brw_wm_prog_key),
sizeof(struct brw_cs_prog_key),
};
assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_sizes));
return stage_sizes[stage];
}

View File

@@ -1109,6 +1109,12 @@ DEFINE_PROG_DATA_DOWNCAST(sf)
struct brw_compiler *
brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo);
unsigned
brw_prog_data_size(gl_shader_stage stage);
unsigned
brw_prog_key_size(gl_shader_stage stage);
/**
* Compile a vertex shader.
*