Mesa (master): freedreno: Add state binding functions for HS/DS/GS

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 25 21:58:35 UTC 2019


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

Author: Kristian H. Kristensen <hoegsberg at google.com>
Date:   Thu Sep 19 13:25:00 2019 -0700

freedreno: Add state binding functions for HS/DS/GS

Signed-off-by: Kristian H. Kristensen <hoegsberg at google.com>

---

 src/gallium/drivers/freedreno/freedreno_context.h |  2 +-
 src/gallium/drivers/freedreno/freedreno_program.c | 30 +++++++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_context.h b/src/gallium/drivers/freedreno/freedreno_context.h
index f353b932b96..f17797a8d2a 100644
--- a/src/gallium/drivers/freedreno/freedreno_context.h
+++ b/src/gallium/drivers/freedreno/freedreno_context.h
@@ -55,7 +55,7 @@ struct fd_texture_stateobj {
 };
 
 struct fd_program_stateobj {
-	void *vs, *fs;
+	void *vs, *hs, *ds, *gs, *fs;
 };
 
 struct fd_constbuf_stateobj {
diff --git a/src/gallium/drivers/freedreno/freedreno_program.c b/src/gallium/drivers/freedreno/freedreno_program.c
index 62fd55b1ac2..8567883fb77 100644
--- a/src/gallium/drivers/freedreno/freedreno_program.c
+++ b/src/gallium/drivers/freedreno/freedreno_program.c
@@ -48,6 +48,33 @@ fd_vs_state_bind(struct pipe_context *pctx, void *hwcso)
 	ctx->dirty |= FD_DIRTY_PROG;
 }
 
+static void
+fd_tcs_state_bind(struct pipe_context *pctx, void *hwcso)
+{
+	struct fd_context *ctx = fd_context(pctx);
+	ctx->prog.hs = hwcso;
+	ctx->dirty_shader[PIPE_SHADER_TESS_CTRL] |= FD_DIRTY_SHADER_PROG;
+	ctx->dirty |= FD_DIRTY_PROG;
+}
+
+static void
+fd_tes_state_bind(struct pipe_context *pctx, void *hwcso)
+{
+	struct fd_context *ctx = fd_context(pctx);
+	ctx->prog.ds = hwcso;
+	ctx->dirty_shader[PIPE_SHADER_TESS_EVAL] |= FD_DIRTY_SHADER_PROG;
+	ctx->dirty |= FD_DIRTY_PROG;
+}
+
+static void
+fd_gs_state_bind(struct pipe_context *pctx, void *hwcso)
+{
+	struct fd_context *ctx = fd_context(pctx);
+	ctx->prog.gs = hwcso;
+	ctx->dirty_shader[PIPE_SHADER_GEOMETRY] |= FD_DIRTY_SHADER_PROG;
+	ctx->dirty |= FD_DIRTY_PROG;
+}
+
 static const char *solid_fs =
 	"FRAG                                        \n"
 	"PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1       \n"
@@ -128,6 +155,9 @@ void fd_prog_init(struct pipe_context *pctx)
 
 	pctx->bind_vs_state = fd_vs_state_bind;
 	pctx->bind_fs_state = fd_fs_state_bind;
+	pctx->bind_tcs_state = fd_tcs_state_bind;
+	pctx->bind_tes_state = fd_tes_state_bind;
+	pctx->bind_gs_state = fd_gs_state_bind;
 
 	ctx->solid_prog.fs = assemble_tgsi(pctx, solid_fs, true);
 	ctx->solid_prog.vs = assemble_tgsi(pctx, solid_vs, false);




More information about the mesa-commit mailing list