From 9013d9267ce11efc9b841816630b34cbe8820d1d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 26 Apr 2016 11:14:24 +1000 Subject: [PATCH] tgsi/exec: fix system value handling. a) SysSemanticToIndex needs to be indexed with the semantic name not the decl->Declaration.Semantic. b) doing this in run is too late, as the mappings are all setup prior to run in the execs. Reviewed-by: Brian Paul Signed-off-by: Dave Airlie --- src/gallium/auxiliary/tgsi/tgsi_exec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index 4567a945e88..e8bb1036420 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -964,6 +964,11 @@ tgsi_exec_machine_bind_shader( ++mach->NumOutputs; } } + else if (parse.FullToken.FullDeclaration.Declaration.File == TGSI_FILE_SYSTEM_VALUE) { + const struct tgsi_full_declaration *decl = &parse.FullToken.FullDeclaration; + mach->SysSemanticToIndex[decl->Semantic.Name] = decl->Range.First; + } + memcpy(declarations + numDeclarations, &parse.FullToken.FullDeclaration, sizeof(declarations[0])); @@ -2777,9 +2782,6 @@ exec_declaration(struct tgsi_exec_machine *mach, } } - if (decl->Declaration.File == TGSI_FILE_SYSTEM_VALUE) { - mach->SysSemanticToIndex[decl->Declaration.Semantic] = decl->Range.First; - } } typedef void (* micro_unary_op)(union tgsi_exec_channel *dst, -- 2.30.2