tgsi/scan: add writes_memory to flag presence of stores or atomics

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle 2016-03-15 20:54:30 -05:00
parent e9d935ed0e
commit 79762e877c
2 changed files with 9 additions and 4 deletions

View file

@ -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)

View file

@ -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;