summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-11-10 17:50:34 -0800
committerEric Anholt <[email protected]>2016-11-12 19:21:46 -0800
commit96ffee2d02a9cbf7ff0042b3083376724b68ed36 (patch)
tree073e2db47170cd906d16f453e2384d4fabff4fa3 /src/gallium/drivers/vc4
parentace0d810e56a1e2978fc3ac237158918ebe2a23c (diff)
vc4: Mark threaded FSes as non-singlethread in the CL.
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r--src/gallium/drivers/vc4/vc4_context.h2
-rw-r--r--src/gallium/drivers/vc4/vc4_draw.c3
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/vc4/vc4_context.h b/src/gallium/drivers/vc4/vc4_context.h
index 3a8ae827b85..db9e82d2a22 100644
--- a/src/gallium/drivers/vc4/vc4_context.h
+++ b/src/gallium/drivers/vc4/vc4_context.h
@@ -163,6 +163,8 @@ struct vc4_compiled_shader {
*/
bool failed;
+ bool fs_threaded;
+
uint8_t num_inputs;
/* Byte offsets for the start of the vertex attributes 0-7, and the
diff --git a/src/gallium/drivers/vc4/vc4_draw.c b/src/gallium/drivers/vc4/vc4_draw.c
index c5afc0cdae1..13db9daeb9e 100644
--- a/src/gallium/drivers/vc4/vc4_draw.c
+++ b/src/gallium/drivers/vc4/vc4_draw.c
@@ -155,7 +155,8 @@ vc4_emit_gl_shader_state(struct vc4_context *vc4,
/* VC4_DIRTY_PRIM_MODE | VC4_DIRTY_RASTERIZER */
cl_u16(&shader_rec,
VC4_SHADER_FLAG_ENABLE_CLIPPING |
- VC4_SHADER_FLAG_FS_SINGLE_THREAD |
+ (vc4->prog.fs->fs_threaded ?
+ 0 : VC4_SHADER_FLAG_FS_SINGLE_THREAD) |
((info->mode == PIPE_PRIM_POINTS &&
vc4->rasterizer->base.point_size_per_vertex) ?
VC4_SHADER_FLAG_VS_POINT_SIZE : 0));
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index d2281ce6bd3..3c30f8c477f 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -2543,6 +2543,8 @@ vc4_get_compiled_shader(struct vc4_context *vc4, enum qstage stage,
sizeof(uint64_t));
}
+ shader->fs_threaded = c->fs_threaded;
+
/* Copy the compiler UBO range state to the compiled shader, dropping
* out arrays that were never referenced by an indirect load.
*