mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
tgsi/scan: get information about shader buffer usage
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
d89890d000
commit
72267a25db
2 changed files with 23 additions and 0 deletions
|
|
@ -339,6 +339,18 @@ scan_instruction(struct tgsi_shader_info *info,
|
|||
info->images_writemask = info->images_declared;
|
||||
else
|
||||
info->images_writemask |= 1 << src->Register.Index;
|
||||
} else if (src->Register.File == TGSI_FILE_BUFFER) {
|
||||
if (src->Register.Indirect)
|
||||
info->shader_buffers_atomic = info->shader_buffers_declared;
|
||||
else
|
||||
info->shader_buffers_atomic |= 1 << src->Register.Index;
|
||||
}
|
||||
} else {
|
||||
if (src->Register.File == TGSI_FILE_BUFFER) {
|
||||
if (src->Register.Indirect)
|
||||
info->shader_buffers_load = info->shader_buffers_declared;
|
||||
else
|
||||
info->shader_buffers_load |= 1 << src->Register.Index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -366,6 +378,11 @@ scan_instruction(struct tgsi_shader_info *info,
|
|||
info->images_writemask = info->images_declared;
|
||||
else
|
||||
info->images_writemask |= 1 << dst->Register.Index;
|
||||
} else if (dst->Register.File == TGSI_FILE_BUFFER) {
|
||||
if (dst->Register.Indirect)
|
||||
info->shader_buffers_store = info->shader_buffers_declared;
|
||||
else
|
||||
info->shader_buffers_store |= 1 << dst->Register.Index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -427,6 +444,8 @@ scan_declaration(struct tgsi_shader_info *info,
|
|||
info->const_buffers_declared |= 1u << buffer;
|
||||
} else if (file == TGSI_FILE_IMAGE) {
|
||||
info->images_declared |= 1u << reg;
|
||||
} else if (file == TGSI_FILE_BUFFER) {
|
||||
info->shader_buffers_declared |= 1u << reg;
|
||||
} else if (file == TGSI_FILE_INPUT) {
|
||||
info->input_semantic_name[reg] = (ubyte) semName;
|
||||
info->input_semantic_index[reg] = (ubyte) semIndex;
|
||||
|
|
|
|||
|
|
@ -133,6 +133,10 @@ struct tgsi_shader_info
|
|||
* Bitmask indicating which declared image is a buffer.
|
||||
*/
|
||||
unsigned images_buffers;
|
||||
unsigned shader_buffers_declared; /**< bitmask of declared shader buffers */
|
||||
unsigned shader_buffers_load; /**< bitmask of shader buffers using loads */
|
||||
unsigned shader_buffers_store; /**< bitmask of shader buffers using stores */
|
||||
unsigned shader_buffers_atomic; /**< bitmask of shader buffers using atomics */
|
||||
/**
|
||||
* Bitmask indicating which register files are accessed with
|
||||
* indirect addressing. The bits are (1 << TGSI_FILE_x), etc.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue