vkd3d-shader: Add loadv/storev helpers for aligned memory access.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
6c9d0cea69
commit
5d2b0e6632
|
@ -1206,6 +1206,18 @@ static uint32_t vkd3d_spirv_build_op_load(struct vkd3d_spirv_builder *builder,
|
||||||
result_type, pointer_id, memory_access);
|
result_type, pointer_id, memory_access);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint32_t vkd3d_spirv_build_op_loadv(struct vkd3d_spirv_builder *builder,
|
||||||
|
uint32_t result_type, uint32_t pointer_id, uint32_t memory_access,
|
||||||
|
const uint32_t *operands, uint32_t operand_count)
|
||||||
|
{
|
||||||
|
if (memory_access == SpvMemoryAccessMaskNone)
|
||||||
|
return vkd3d_spirv_build_op_tr1(builder, &builder->function_stream, SpvOpLoad,
|
||||||
|
result_type, pointer_id);
|
||||||
|
else
|
||||||
|
return vkd3d_spirv_build_op_tr2v(builder, &builder->function_stream, SpvOpLoad,
|
||||||
|
result_type, pointer_id, memory_access, operands, operand_count);
|
||||||
|
}
|
||||||
|
|
||||||
static void vkd3d_spirv_build_op_store(struct vkd3d_spirv_builder *builder,
|
static void vkd3d_spirv_build_op_store(struct vkd3d_spirv_builder *builder,
|
||||||
uint32_t pointer_id, uint32_t object_id, uint32_t memory_access)
|
uint32_t pointer_id, uint32_t object_id, uint32_t memory_access)
|
||||||
{
|
{
|
||||||
|
@ -1217,6 +1229,18 @@ static void vkd3d_spirv_build_op_store(struct vkd3d_spirv_builder *builder,
|
||||||
pointer_id, object_id, memory_access);
|
pointer_id, object_id, memory_access);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void vkd3d_spirv_build_op_storev(struct vkd3d_spirv_builder *builder,
|
||||||
|
uint32_t pointer_id, uint32_t object_id, uint32_t memory_access,
|
||||||
|
const uint32_t *operands, uint32_t operand_count)
|
||||||
|
{
|
||||||
|
if (memory_access == SpvMemoryAccessMaskNone)
|
||||||
|
vkd3d_spirv_build_op2(&builder->function_stream, SpvOpStore,
|
||||||
|
pointer_id, object_id);
|
||||||
|
else
|
||||||
|
vkd3d_spirv_build_op3v(&builder->function_stream, SpvOpStore,
|
||||||
|
pointer_id, object_id, memory_access, operands, operand_count);
|
||||||
|
}
|
||||||
|
|
||||||
static void vkd3d_spirv_build_op_copy_memory(struct vkd3d_spirv_builder *builder,
|
static void vkd3d_spirv_build_op_copy_memory(struct vkd3d_spirv_builder *builder,
|
||||||
uint32_t target_id, uint32_t source_id, uint32_t memory_access)
|
uint32_t target_id, uint32_t source_id, uint32_t memory_access)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue