summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
diff options
context:
space:
mode:
authorPaul Berry <stereotype441@gmail.com>2013-10-16 12:13:20 -0700
committerPaul Berry <stereotype441@gmail.com>2013-10-24 22:00:43 -0700
commit34cba13ef822faebbb1f10f1400f87fa9bf70d60 (patch)
treeb3a8a39d9f0ec2c96f4b9505585a9a2fab545ce5 /src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
parent89647cffb31ee1ea42d581b1053b4bb147b3e58a (diff)
downloadexternal_mesa3d-34cba13ef822faebbb1f10f1400f87fa9bf70d60.zip
external_mesa3d-34cba13ef822faebbb1f10f1400f87fa9bf70d60.tar.gz
external_mesa3d-34cba13ef822faebbb1f10f1400f87fa9bf70d60.tar.bz2
i965/vec4: Add the ability to suppress register spilling.
In future patches, this will allow us to first try compiling a geometry shader in DUAL_OBJECT mode (which is more efficient but uses more registers) and then if spilling is required, fall back on DUAL_INSTANCED mode. Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
index 08a55a3..a44f593 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
@@ -37,10 +37,11 @@ vec4_gs_visitor::vec4_gs_visitor(struct brw_context *brw,
struct brw_gs_compile *c,
struct gl_shader_program *prog,
struct brw_shader *shader,
- void *mem_ctx)
+ void *mem_ctx,
+ bool no_spills)
: vec4_visitor(brw, &c->base, &c->gp->program.Base, &c->key.base,
&c->prog_data.base, prog, shader, mem_ctx,
- INTEL_DEBUG & DEBUG_GS),
+ INTEL_DEBUG & DEBUG_GS, no_spills),
c(c)
{
}
@@ -533,7 +534,7 @@ brw_gs_emit(struct brw_context *brw,
printf("\n\n");
}
- vec4_gs_visitor v(brw, c, prog, shader, mem_ctx);
+ vec4_gs_visitor v(brw, c, prog, shader, mem_ctx, false /* no_spills */);
if (!v.run()) {
prog->LinkStatus = false;
ralloc_strcat(&prog->InfoLog, v.fail_msg);