return type->without_array();
}
+const glsl_type *
+glsl_without_array_or_matrix(const glsl_type *type)
+{
+ type = type->without_array();
+ if (type->is_matrix())
+ type = type->column_type();
+ return type;
+}
+
const glsl_type *
glsl_get_array_instance(const glsl_type *type,
unsigned array_size)
return type->column_type();
}
+GLenum
+glsl_get_gl_type(const struct glsl_type *type)
+{
+ return type->gl_type;
+}
+
enum glsl_base_type
glsl_get_base_type(const struct glsl_type *type)
{
return type->sampler_index();
}
+int
+glsl_get_sampler_coordinate_components(const struct glsl_type *type)
+{
+ assert(glsl_type_is_sampler(type) || glsl_type_is_image(type));
+ return type->coordinate_components();
+}
+
unsigned
glsl_get_record_location_offset(const struct glsl_type *type,
unsigned length)
return type->record_location_offset(length);
}
+bool
+glsl_type_is_16bit(const glsl_type *type)
+{
+ return type->is_16bit();
+}
+
bool
glsl_type_is_64bit(const glsl_type *type)
{
return type->is_array_of_arrays();
}
+bool
+glsl_type_is_array_or_matrix(const struct glsl_type *type)
+{
+ return type->is_array() || type->is_matrix();
+}
+
bool
glsl_type_is_struct(const struct glsl_type *type)
{
return glsl_uint64_t_type();
case GLSL_TYPE_INT64:
return glsl_int64_t_type();
+ case GLSL_TYPE_FLOAT16:
+ return glsl_float16_t_type();
+ case GLSL_TYPE_UINT16:
+ return glsl_uint16_t_type();
+ case GLSL_TYPE_INT16:
+ return glsl_int16_t_type();
default:
unreachable("Unhandled base type glsl_channel_type()");
}
{
return glsl_type::atomic_uint_type;
}
+
+unsigned
+glsl_atomic_size(const struct glsl_type *type)
+{
+ return type->atomic_size();
+}
+
+bool
+glsl_contains_atomic(const struct glsl_type *type)
+{
+ return type->contains_atomic();
+}