nir/spirv: Array lengths are constants not literals
This commit is contained in:
@@ -515,8 +515,14 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
|
|||||||
struct vtn_type *array_element =
|
struct vtn_type *array_element =
|
||||||
vtn_value(b, w[2], vtn_value_type_type)->type;
|
vtn_value(b, w[2], vtn_value_type_type)->type;
|
||||||
|
|
||||||
/* A length of 0 is used to denote unsized arrays */
|
unsigned length;
|
||||||
unsigned length = (opcode == SpvOpTypeArray) ? w[3] : 0;
|
if (opcode == SpvOpTypeRuntimeArray) {
|
||||||
|
/* A length of 0 is used to denote unsized arrays */
|
||||||
|
length = 0;
|
||||||
|
} else {
|
||||||
|
length =
|
||||||
|
vtn_value(b, w[3], vtn_value_type_constant)->constant->value.u[0];
|
||||||
|
}
|
||||||
|
|
||||||
val->type->type = glsl_array_type(array_element->type, length);
|
val->type->type = glsl_array_type(array_element->type, length);
|
||||||
val->type->array_element = array_element;
|
val->type->array_element = array_element;
|
||||||
|
Reference in New Issue
Block a user