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:
parent
7f96a8471e
commit
491364e1f3
11 changed files with 109 additions and 9 deletions
|
|
@ -96,6 +96,7 @@ generate_data_element(void *mem_ctx, const glsl_type *type,
|
|||
case GLSL_TYPE_ARRAY:
|
||||
case GLSL_TYPE_VOID:
|
||||
case GLSL_TYPE_ERROR:
|
||||
case GLSL_TYPE_INTERFACE:
|
||||
ASSERT_TRUE(false);
|
||||
break;
|
||||
}
|
||||
|
|
@ -122,6 +123,7 @@ generate_data_element(void *mem_ctx, const glsl_type *type,
|
|||
case GLSL_TYPE_ARRAY:
|
||||
case GLSL_TYPE_VOID:
|
||||
case GLSL_TYPE_ERROR:
|
||||
case GLSL_TYPE_INTERFACE:
|
||||
ASSERT_TRUE(false);
|
||||
break;
|
||||
}
|
||||
|
|
@ -219,6 +221,7 @@ verify_data(gl_constant_value *storage, unsigned storage_array_size,
|
|||
case GLSL_TYPE_ARRAY:
|
||||
case GLSL_TYPE_VOID:
|
||||
case GLSL_TYPE_ERROR:
|
||||
case GLSL_TYPE_INTERFACE:
|
||||
ASSERT_TRUE(false);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue