glsl: Add GLSL_TYPE_INTERFACE
Interfaces are structurally identical to structures from the compiler's point of view. They have some additional restrictions, and generally GPUs use different instructions to access them. Using a different base type should make this a bit easier. This commit also adds the glsl_type::interface_packing fields. For GLSL_TYPE_INTERFACE types, this will track the specified packing mode. It is analogous to gl_uniform_buffer::_Packing. v2: Add serveral missing GLSL_TYPE_INTERFACE cases in switch-statements. v3: Add information about glsl_type::interface_packing. Move row_major checking in glsl_type::record_key_compare from this patch to the previous patch. Both suggested by Paul Berry. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Paul Berry <stereotype441@gmail.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -625,6 +625,7 @@ type_size(const struct glsl_type *type)
|
||||
return 1;
|
||||
case GLSL_TYPE_VOID:
|
||||
case GLSL_TYPE_ERROR:
|
||||
case GLSL_TYPE_INTERFACE:
|
||||
assert(!"Invalid type in type_size");
|
||||
break;
|
||||
}
|
||||
@@ -2536,6 +2537,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
|
||||
case GLSL_TYPE_VOID:
|
||||
case GLSL_TYPE_STRUCT:
|
||||
case GLSL_TYPE_ERROR:
|
||||
case GLSL_TYPE_INTERFACE:
|
||||
assert(!"Should not get here.");
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user