vtn: Allow for OpCopyLogical with different but compatible types
> Result Type must not equal the type of Operand (see OpCopyObject), > but Result Type must logically match the Operand type. Allow for this by setting the expected type and making sure, that both types match. cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10163 Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26252>
This commit is contained in:
committed by
Marge Bot
parent
745d7b63eb
commit
4c363acf94
@@ -4375,9 +4375,13 @@ vtn_handle_composite(struct vtn_builder *b, SpvOp opcode,
|
|||||||
w + 5, count - 5);
|
w + 5, count - 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SpvOpCopyLogical:
|
case SpvOpCopyLogical: {
|
||||||
ssa = vtn_composite_copy(b, vtn_ssa_value(b, w[3]));
|
ssa = vtn_composite_copy(b, vtn_ssa_value(b, w[3]));
|
||||||
|
struct vtn_type *dst_type = vtn_get_value_type(b, w[2]);
|
||||||
|
vtn_assert(vtn_types_compatible(b, type, dst_type));
|
||||||
|
ssa->type = glsl_get_bare_type(dst_type->type);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SpvOpCopyObject:
|
case SpvOpCopyObject:
|
||||||
vtn_copy_value(b, w[3], w[2]);
|
vtn_copy_value(b, w[3], w[2]);
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user