summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
diff options
context:
space:
mode:
authorJordan Justen <jordan.l.justen@intel.com>2014-08-30 19:57:39 -0700
committerJordan Justen <jordan.l.justen@intel.com>2015-05-02 00:34:28 -0700
commitc380973a9564be57acdae5ab6c6a9efcb72cf6c9 (patch)
treeffa1168a86239d8f7b19ddf5546425c40b775d6b /src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
parentae6308a41e9d11b4b166fb2f821e7252ca2761e8 (diff)
downloadexternal_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.cpp23
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");
}