mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 19:20:08 +01:00
nir: move gls_type_get_{sampler,image}_count()
I need at least the sampler variant in ir3.. Signed-off-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
8eb16ae8bf
commit
d4cbc94685
3 changed files with 45 additions and 42 deletions
|
|
@ -332,48 +332,6 @@ gather_info_block(nir_block *block, nir_shader *shader, void *dead_ctx)
|
|||
}
|
||||
}
|
||||
|
||||
static unsigned
|
||||
glsl_type_get_sampler_count(const struct glsl_type *type)
|
||||
{
|
||||
if (glsl_type_is_array(type)) {
|
||||
return (glsl_get_aoa_size(type) *
|
||||
glsl_type_get_sampler_count(glsl_without_array(type)));
|
||||
}
|
||||
|
||||
if (glsl_type_is_struct_or_ifc(type)) {
|
||||
unsigned count = 0;
|
||||
for (int i = 0; i < glsl_get_length(type); i++)
|
||||
count += glsl_type_get_sampler_count(glsl_get_struct_field(type, i));
|
||||
return count;
|
||||
}
|
||||
|
||||
if (glsl_type_is_sampler(type))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned
|
||||
glsl_type_get_image_count(const struct glsl_type *type)
|
||||
{
|
||||
if (glsl_type_is_array(type)) {
|
||||
return (glsl_get_aoa_size(type) *
|
||||
glsl_type_get_image_count(glsl_without_array(type)));
|
||||
}
|
||||
|
||||
if (glsl_type_is_struct_or_ifc(type)) {
|
||||
unsigned count = 0;
|
||||
for (int i = 0; i < glsl_get_length(type); i++)
|
||||
count += glsl_type_get_image_count(glsl_get_struct_field(type, i));
|
||||
return count;
|
||||
}
|
||||
|
||||
if (glsl_type_is_image(type))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -679,3 +679,45 @@ glsl_get_cl_alignment(const struct glsl_type *type)
|
|||
{
|
||||
return type->cl_alignment();
|
||||
}
|
||||
|
||||
unsigned
|
||||
glsl_type_get_sampler_count(const struct glsl_type *type)
|
||||
{
|
||||
if (glsl_type_is_array(type)) {
|
||||
return (glsl_get_aoa_size(type) *
|
||||
glsl_type_get_sampler_count(glsl_without_array(type)));
|
||||
}
|
||||
|
||||
if (glsl_type_is_struct_or_ifc(type)) {
|
||||
unsigned count = 0;
|
||||
for (int i = 0; i < glsl_get_length(type); i++)
|
||||
count += glsl_type_get_sampler_count(glsl_get_struct_field(type, i));
|
||||
return count;
|
||||
}
|
||||
|
||||
if (glsl_type_is_sampler(type))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned
|
||||
glsl_type_get_image_count(const struct glsl_type *type)
|
||||
{
|
||||
if (glsl_type_is_array(type)) {
|
||||
return (glsl_get_aoa_size(type) *
|
||||
glsl_type_get_image_count(glsl_without_array(type)));
|
||||
}
|
||||
|
||||
if (glsl_type_is_struct_or_ifc(type)) {
|
||||
unsigned count = 0;
|
||||
for (int i = 0; i < glsl_get_length(type); i++)
|
||||
count += glsl_type_get_image_count(glsl_get_struct_field(type, i));
|
||||
return count;
|
||||
}
|
||||
|
||||
if (glsl_type_is_image(type))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,6 +197,9 @@ void glsl_get_natural_size_align_bytes(const struct glsl_type *type,
|
|||
|
||||
const struct glsl_type *glsl_atomic_uint_type(void);
|
||||
|
||||
unsigned glsl_type_get_sampler_count(const struct glsl_type *type);
|
||||
unsigned glsl_type_get_image_count(const struct glsl_type *type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue