summaryrefslogtreecommitdiffstats
path: root/src/intel/compiler
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2017-10-21 01:30:13 -0700
committerJordan Justen <[email protected]>2017-10-31 23:36:54 -0700
commitf082d7f64f4bbdc29a04b3ddb6491251cafdd9e2 (patch)
tree76b8f054d3a662846ffe46d30d86f27fe5a2fe55 /src/intel/compiler
parent05b11933619c8f57bef1e0d71c34c523993d6257 (diff)
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 <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/intel/compiler')
-rw-r--r--src/intel/compiler/brw_compiler.c36
-rw-r--r--src/intel/compiler/brw_compiler.h6
2 files changed, 42 insertions, 0 deletions
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.
*