spirv: Rework asserts in var_decoration_cb
Now that higher levels are enforcing decoration sanity, we don't need the vtn_asserts here. This function *should* be safe but we still want a few well-placed regular asserts in case something goes awry. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -1465,11 +1465,11 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (val->value_type == vtn_value_type_pointer) {
|
if (val->value_type == vtn_value_type_pointer) {
|
||||||
vtn_assert(val->pointer->var == void_var);
|
assert(val->pointer->var == void_var);
|
||||||
vtn_assert(val->pointer->chain == NULL);
|
assert(val->pointer->chain == NULL);
|
||||||
vtn_assert(member == -1);
|
assert(member == -1);
|
||||||
} else {
|
} else {
|
||||||
vtn_assert(val->value_type == vtn_value_type_type);
|
assert(val->value_type == vtn_value_type_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Location is odd. If applied to a split structure, we have to walk the
|
/* Location is odd. If applied to a split structure, we have to walk the
|
||||||
@@ -1501,7 +1501,7 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
|
|||||||
vtn_var->var->data.location = location;
|
vtn_var->var->data.location = location;
|
||||||
} else {
|
} else {
|
||||||
/* This handles the structure member case */
|
/* This handles the structure member case */
|
||||||
vtn_assert(vtn_var->members);
|
assert(vtn_var->members);
|
||||||
unsigned length =
|
unsigned length =
|
||||||
glsl_get_length(glsl_without_array(vtn_var->type->type));
|
glsl_get_length(glsl_without_array(vtn_var->type->type));
|
||||||
for (unsigned i = 0; i < length; i++) {
|
for (unsigned i = 0; i < length; i++) {
|
||||||
@@ -1514,11 +1514,12 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (vtn_var->var) {
|
if (vtn_var->var) {
|
||||||
vtn_assert(member <= 0);
|
assert(member == -1);
|
||||||
apply_var_decoration(b, vtn_var->var, dec);
|
apply_var_decoration(b, vtn_var->var, dec);
|
||||||
} else if (vtn_var->members) {
|
} else if (vtn_var->members) {
|
||||||
if (member >= 0) {
|
if (member >= 0) {
|
||||||
vtn_assert(vtn_var->members);
|
/* Member decorations must come from a type */
|
||||||
|
assert(val->value_type == vtn_value_type_type);
|
||||||
apply_var_decoration(b, vtn_var->members[member], dec);
|
apply_var_decoration(b, vtn_var->members[member], dec);
|
||||||
} else {
|
} else {
|
||||||
unsigned length =
|
unsigned length =
|
||||||
|
Reference in New Issue
Block a user