spirv: Add pointer helper vars to OpCopyMemory

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>
This commit is contained in:
Jason Ekstrand
2020-08-27 18:33:50 -05:00
committed by Marge Bot
parent e7fbec0e09
commit 207b462e93

View File

@@ -2636,10 +2636,13 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
} }
case SpvOpCopyMemory: { case SpvOpCopyMemory: {
struct vtn_value *dest = vtn_value(b, w[1], vtn_value_type_pointer); struct vtn_value *dest_val = vtn_value(b, w[1], vtn_value_type_pointer);
struct vtn_value *src = vtn_value(b, w[2], vtn_value_type_pointer); struct vtn_value *src_val = vtn_value(b, w[2], vtn_value_type_pointer);
struct vtn_pointer *dest = dest_val->pointer;
struct vtn_pointer *src = src_val->pointer;
vtn_assert_types_equal(b, opcode, dest->type->deref, src->type->deref); vtn_assert_types_equal(b, opcode, dest_val->type->deref,
src_val->type->deref);
unsigned idx = 3, dest_alignment, src_alignment; unsigned idx = 3, dest_alignment, src_alignment;
SpvMemoryAccessMask dest_access, src_access; SpvMemoryAccessMask dest_access, src_access;
@@ -2652,13 +2655,13 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
src_access = dest_access; src_access = dest_access;
} }
vtn_emit_make_visible_barrier(b, src_access, src_scope, src->pointer->mode); vtn_emit_make_visible_barrier(b, src_access, src_scope, src->mode);
vtn_variable_copy(b, dest->pointer, src->pointer, vtn_variable_copy(b, dest, src,
spv_access_to_gl_access(dest_access), spv_access_to_gl_access(dest_access),
spv_access_to_gl_access(src_access)); spv_access_to_gl_access(src_access));
vtn_emit_make_available_barrier(b, dest_access, dest_scope, dest->pointer->mode); vtn_emit_make_available_barrier(b, dest_access, dest_scope, dest->mode);
break; break;
} }