summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2019-03-10 21:43:37 -0500
committerJason Ekstrand <[email protected]>2019-03-15 01:02:19 +0000
commit5b2b1445660e260122773acea1c3b2032149d453 (patch)
treeaf20fbe8ad32980f44b2c59fc8064e74e6dbc93f /src/compiler
parentef4ca44780b4c146bab799837616ec90a1000688 (diff)
compiler/types: Add a C wrapper to get full struct field data
Reviewed-by: Kristian H. Kristensen <[email protected]> Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir_types.cpp8
-rw-r--r--src/compiler/nir_types.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp
index 31c463bda46..9101d49ffbb 100644
--- a/src/compiler/nir_types.cpp
+++ b/src/compiler/nir_types.cpp
@@ -78,6 +78,14 @@ glsl_get_struct_field_offset(const struct glsl_type *type,
return type->fields.structure[index].offset;
}
+const struct glsl_struct_field *
+glsl_get_struct_field_data(const struct glsl_type *type, unsigned index)
+{
+ assert(type->is_struct() || type->is_interface());
+ assert(index < type->length);
+ return &type->fields.structure[index];
+}
+
unsigned
glsl_get_explicit_stride(const struct glsl_type *type)
{
diff --git a/src/compiler/nir_types.h b/src/compiler/nir_types.h
index 0c4bd4d1dbb..4d8aada5f27 100644
--- a/src/compiler/nir_types.h
+++ b/src/compiler/nir_types.h
@@ -49,6 +49,9 @@ const struct glsl_type *glsl_get_struct_field(const struct glsl_type *type,
int glsl_get_struct_field_offset(const struct glsl_type *type,
unsigned index);
+const struct glsl_struct_field *
+glsl_get_struct_field_data(const struct glsl_type *type, unsigned index);
+
unsigned glsl_get_explicit_stride(const struct glsl_type *type);
const struct glsl_type *glsl_get_array_element(const struct glsl_type *type);
const struct glsl_type *glsl_without_array(const struct glsl_type *type);