diff options
author | Jordan Justen <jordan.l.justen@intel.com> | 2015-03-14 12:55:54 -0700 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2015-05-02 00:49:59 -0700 |
commit | 6ec6c1581c2963423917ee1598ffb07cab3f2ddc (patch) | |
tree | a91e6b2d04193542ecd80021f36a5d5a3fb48aa2 /src/mesa/drivers/dri/i965/brw_cs.cpp | |
parent | 17233f9bbcbf570f0c7633c63dbd5ed88634ed60 (diff) | |
download | external_mesa3d-6ec6c1581c2963423917ee1598ffb07cab3f2ddc.zip external_mesa3d-6ec6c1581c2963423917ee1598ffb07cab3f2ddc.tar.gz external_mesa3d-6ec6c1581c2963423917ee1598ffb07cab3f2ddc.tar.bz2 |
i965/cs: Support CS program precompile
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_cs.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_cs.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_cs.cpp b/src/mesa/drivers/dri/i965/brw_cs.cpp index 1b88fd4..e18685a 100644 --- a/src/mesa/drivers/dri/i965/brw_cs.cpp +++ b/src/mesa/drivers/dri/i965/brw_cs.cpp @@ -254,3 +254,31 @@ brw_upload_cs_prog(struct brw_context *brw) } brw->cs.base.prog_data = &brw->cs.prog_data->base; } + + +extern "C" bool +brw_cs_precompile(struct gl_context *ctx, + struct gl_shader_program *shader_prog, + struct gl_program *prog) +{ + struct brw_context *brw = brw_context(ctx); + struct brw_cs_prog_key key; + + struct gl_compute_program *cp = (struct gl_compute_program *) prog; + struct brw_compute_program *bcp = brw_compute_program(cp); + + memset(&key, 0, sizeof(key)); + key.program_string_id = bcp->id; + + brw_setup_tex_for_precompile(brw, &key.tex, prog); + + uint32_t old_prog_offset = brw->cs.base.prog_offset; + struct brw_cs_prog_data *old_prog_data = brw->cs.prog_data; + + bool success = brw_codegen_cs_prog(brw, shader_prog, bcp, &key); + + brw->cs.base.prog_offset = old_prog_offset; + brw->cs.prog_data = old_prog_data; + + return success; +} |