Mesa (master): vc4: Mark our shaders as single-threaded.

Eric Anholt anholt at kemper.freedesktop.org
Thu Jul 30 22:52:08 UTC 2015


Module: Mesa
Branch: master
Commit: c93ffd661a46f0f6d20c9ec2e97d4d9393e28111
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c93ffd661a46f0f6d20c9ec2e97d4d9393e28111

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Jul 29 12:16:50 2015 -0700

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.

---

 src/gallium/drivers/vc4/kernel/vc4_validate.c |    5 +++++
 src/gallium/drivers/vc4/vc4_draw.c            |    1 +
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/vc4/kernel/vc4_validate.c b/src/gallium/drivers/vc4/kernel/vc4_validate.c
index 674ca63..b248831 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 22ae8f2..a4e5e09 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));




More information about the mesa-commit mailing list