[Mesa-dev] [PATCH 21/20] tgsi/scan: add writes_memory to flag presence of stores or atomics
Nicolai Hähnle
nhaehnle at gmail.com
Wed Mar 16 03:09:06 UTC 2016
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
src/gallium/auxiliary/tgsi/tgsi_scan.c | 12 ++++++++----
src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 +
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 65bdab5..d32c3a1 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -196,10 +196,13 @@ scan_instruction(struct tgsi_shader_info *info,
if (is_memory_file(src->Register.File)) {
is_mem_inst = true;
- if (src->Register.File == TGSI_FILE_IMAGE &&
- !src->Register.Indirect &&
- tgsi_get_opcode_info(fullinst->Instruction.Opcode)->is_store)
- info->images_writemask |= 1 << src->Register.Index;
+ if (tgsi_get_opcode_info(fullinst->Instruction.Opcode)->is_store) {
+ info->writes_memory = TRUE;
+
+ if (src->Register.File == TGSI_FILE_IMAGE &&
+ !src->Register.Indirect)
+ info->images_writemask |= 1 << src->Register.Index;
+ }
}
}
@@ -215,6 +218,7 @@ scan_instruction(struct tgsi_shader_info *info,
assert(fullinst->Instruction.Opcode == TGSI_OPCODE_STORE);
is_mem_inst = true;
+ info->writes_memory = TRUE;
if (dst->Register.File == TGSI_FILE_IMAGE &&
!dst->Register.Indirect)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index d777f23..76d8925 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -111,6 +111,7 @@ struct tgsi_shader_info
boolean writes_clipvertex;
boolean writes_viewport_index;
boolean writes_layer;
+ boolean writes_memory; /**< contains stores or atomics to buffers or images */
boolean is_msaa_sampler[PIPE_MAX_SAMPLERS];
boolean uses_doubles; /**< uses any of the double instructions */
unsigned clipdist_writemask;
--
2.5.0
More information about the mesa-dev
mailing list