diff options
author | Eric Anholt <[email protected]> | 2015-07-29 12:16:50 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2015-07-30 15:46:28 -0700 |
commit | c93ffd661a46f0f6d20c9ec2e97d4d9393e28111 (patch) | |
tree | 313964f0b12259281f1cabbca040ac953bc7ff6c | |
parent | df3005de189f5120bc06f6cba35ecaf5c4503229 (diff) |
vc4: Mark our shaders as single-threaded.
I had my understanding of this bit flipped. We're using the full register
space, so we need to say so.
-rw-r--r-- | src/gallium/drivers/vc4/kernel/vc4_validate.c | 5 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_draw.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/kernel/vc4_validate.c b/src/gallium/drivers/vc4/kernel/vc4_validate.c index 674ca637864..b248831113c 100644 --- a/src/gallium/drivers/vc4/kernel/vc4_validate.c +++ b/src/gallium/drivers/vc4/kernel/vc4_validate.c @@ -780,6 +780,11 @@ validate_gl_shader_rec(struct drm_device *dev, exec->shader_rec_v += roundup(packet_size, 16); exec->shader_rec_size -= packet_size; + if (!(*(uint16_t *)pkt_u & VC4_SHADER_FLAG_FS_SINGLE_THREAD)) { + DRM_ERROR("Multi-threaded fragment shaders not supported.\n"); + return -EINVAL; + } + for (i = 0; i < shader_reloc_count; i++) { if (src_handles[i] > exec->bo_count) { DRM_ERROR("Shader handle %d too big\n", src_handles[i]); diff --git a/src/gallium/drivers/vc4/vc4_draw.c b/src/gallium/drivers/vc4/vc4_draw.c index 22ae8f27e4a..a4e5e092b1a 100644 --- a/src/gallium/drivers/vc4/vc4_draw.c +++ b/src/gallium/drivers/vc4/vc4_draw.c @@ -139,6 +139,7 @@ vc4_emit_gl_shader_state(struct vc4_context *vc4, const struct pipe_draw_info *i /* VC4_DIRTY_PRIM_MODE | VC4_DIRTY_RASTERIZER */ cl_u16(&shader_rec, VC4_SHADER_FLAG_ENABLE_CLIPPING | + 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)); |