Mesa (master): radeonsi: Only scan pixel shaders for TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS

Michel Dänzer daenzer at kemper.freedesktop.org
Fri Dec 20 10:21:03 UTC 2013


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

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Thu Dec 19 11:36:52 2013 +0900

radeonsi: Only scan pixel shaders for TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS

It's not relevant for other shader types.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_state.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 5274eff..8705d16 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2246,14 +2246,17 @@ static void *si_create_shader_state(struct pipe_context *ctx,
 {
 	struct si_pipe_shader_selector *sel = CALLOC_STRUCT(si_pipe_shader_selector);
 	int r;
-	struct tgsi_shader_info info;
-
-	tgsi_scan_shader(state->tokens, &info);
 
 	sel->type = pipe_shader_type;
 	sel->tokens = tgsi_dup_tokens(state->tokens);
 	sel->so = state->stream_output;
-	sel->fs_write_all = info.color0_writes_all_cbufs;
+
+	if (pipe_shader_type == PIPE_SHADER_FRAGMENT) {
+		struct tgsi_shader_info info;
+
+		tgsi_scan_shader(state->tokens, &info);
+		sel->fs_write_all = info.color0_writes_all_cbufs;
+	}
 
 	r = si_shader_select(ctx, sel, NULL);
 	if (r) {




More information about the mesa-commit mailing list