diff options
author | Jordan Justen <jordan.l.justen@intel.com> | 2014-08-30 19:57:39 -0700 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2015-05-02 00:34:28 -0700 |
commit | c380973a9564be57acdae5ab6c6a9efcb72cf6c9 (patch) | |
tree | ffa1168a86239d8f7b19ddf5546425c40b775d6b /src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | |
parent | ae6308a41e9d11b4b166fb2f821e7252ca2761e8 (diff) | |
download | external_mesa3d-c380973a9564be57acdae5ab6c6a9efcb72cf6c9.zip external_mesa3d-c380973a9564be57acdae5ab6c6a9efcb72cf6c9.tar.gz external_mesa3d-c380973a9564be57acdae5ab6c6a9efcb72cf6c9.tar.bz2 |
i965/fs: Support compute programs in fs_visitor
v2:
* Clean out some unneeded code copied from run_fs (krh)
* Always use NIR
* Split shader time out into a separate commit
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_fs_visitor.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 01d4cbd..eba188c 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -39,6 +39,7 @@ #include "brw_context.h" #include "brw_eu.h" #include "brw_wm.h" +#include "brw_cs.h" #include "brw_vec4.h" #include "brw_fs.h" #include "main/uniforms.h" @@ -4237,6 +4238,25 @@ fs_visitor::fs_visitor(struct brw_context *brw, init(); } +fs_visitor::fs_visitor(struct brw_context *brw, + void *mem_ctx, + const struct brw_cs_prog_key *key, + struct brw_cs_prog_data *prog_data, + struct gl_shader_program *shader_prog, + struct gl_compute_program *cp, + unsigned dispatch_width) + : backend_visitor(brw, shader_prog, &cp->Base, &prog_data->base, + MESA_SHADER_COMPUTE), + reg_null_f(retype(brw_null_vec(dispatch_width), BRW_REGISTER_TYPE_F)), + reg_null_d(retype(brw_null_vec(dispatch_width), BRW_REGISTER_TYPE_D)), + reg_null_ud(retype(brw_null_vec(dispatch_width), BRW_REGISTER_TYPE_UD)), + key(key), prog_data(&prog_data->base), + dispatch_width(dispatch_width) +{ + this->mem_ctx = mem_ctx; + init(); +} + void fs_visitor::init() { @@ -4248,6 +4268,9 @@ fs_visitor::init() case MESA_SHADER_GEOMETRY: key_tex = &((const brw_vue_prog_key *) key)->tex; break; + case MESA_SHADER_COMPUTE: + key_tex = &((const brw_cs_prog_key*) key)->tex; + break; default: unreachable("unhandled shader stage"); } |