From f082d7f64f4bbdc29a04b3ddb6491251cafdd9e2 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sat, 21 Oct 2017 01:30:13 -0700 Subject: 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 Reviewed-by: Jason Ekstrand Reviewed-by: Kenneth Graunke --- src/intel/compiler/brw_compiler.c | 36 ++++++++++++++++++++++++++++++++++++ src/intel/compiler/brw_compiler.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/src/intel/compiler/brw_compiler.c b/src/intel/compiler/brw_compiler.c index 2f6af7d2c3f..f6120cbf0ac 100644 --- a/src/intel/compiler/brw_compiler.c +++ b/src/intel/compiler/brw_compiler.c @@ -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]; +} diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index 2bb7111ad53..ede3d1508a1 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -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. * -- cgit v1.2.3