summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2014-05-06 12:37:46 -0700
committerMatt Turner <mattst88@gmail.com>2014-08-19 17:42:39 -0700
commit4c9821fb53fb642caf50a8bce648ed8ad3121eb3 (patch)
treee63b442a2a74dba0b9906ba9e6bd93c40a9caa20
parent0f004af67d39883484b9951f3b789961f0a0cadb (diff)
i965/blorp: Enable SPF when the shader contains no control flow.dead/spf
-rw-r--r--src/mesa/drivers/dri/i965/gen6_blorp.cpp1
-rw-r--r--src/mesa/drivers/dri/i965/gen7_blorp.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index 9ab100305e3..feef0db234b 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -683,6 +683,7 @@ gen6_blorp_emit_wm_config(struct brw_context *brw,
dw6 |= 0 << GEN6_WM_NUM_SF_OUTPUTS_SHIFT; /* No inputs from SF */
if (params->use_wm_prog) {
dw2 |= 1 << GEN6_WM_SAMPLER_COUNT_SHIFT; /* Up to 4 samplers */
+ dw2 |= !prog_data->has_control_flow ? GEN6_WM_SPF_MODE : 0;
dw4 |= prog_data->first_curbe_grf << GEN6_WM_DISPATCH_START_GRF_SHIFT_0;
dw5 |= GEN6_WM_16_DISPATCH_ENABLE;
dw5 |= GEN6_WM_KILL_ENABLE; /* TODO: temporarily smash on */
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index 206a6ff6d5d..30c2cc18af6 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -525,6 +525,7 @@ gen7_blorp_emit_ps_config(struct brw_context *brw,
dw4 |= SET_FIELD(1, HSW_PS_SAMPLE_MASK); /* 1 sample for now */
if (params->use_wm_prog) {
dw2 |= 1 << GEN7_PS_SAMPLER_COUNT_SHIFT; /* Up to 4 samplers */
+ dw2 |= !prog_data->has_control_flow ? GEN7_PS_SPF_MODE : 0;
dw4 |= GEN7_PS_PUSH_CONSTANT_ENABLE;
dw5 |= prog_data->first_curbe_grf << GEN7_PS_DISPATCH_START_GRF_SHIFT_0;
}