vkd3d-shader: Decorate "precise" arithmetic instructions with SpvDecorationNoContraction.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
This commit is contained in:
Henri Verbeet 2021-01-12 14:27:04 +01:00 committed by Hans-Kristian Arntzen
parent 29e3d292ae
commit c42f4d11e2
1 changed files with 4 additions and 0 deletions

View File

@ -7095,6 +7095,8 @@ static void vkd3d_dxbc_compiler_emit_alu_instruction(struct vkd3d_dxbc_compiler
val_id = vkd3d_spirv_build_op_trv(builder, &builder->function_stream, op, type_id,
src_ids, instruction->src_count);
if (instruction->flags & VKD3DSI_PRECISE_XYZW)
vkd3d_spirv_build_op_decorate(builder, val_id, SpvDecorationNoContraction, NULL, 0);
vkd3d_dxbc_compiler_emit_store_dst(compiler, dst, val_id);
}
@ -7331,6 +7333,8 @@ static void vkd3d_dxbc_compiler_emit_dot(struct vkd3d_dxbc_compiler *compiler,
val_id = vkd3d_dxbc_compiler_emit_construct_vector(compiler,
component_type, component_count, val_id, 0, 1);
}
if (instruction->flags & VKD3DSI_PRECISE_XYZW)
vkd3d_spirv_build_op_decorate(builder, val_id, SpvDecorationNoContraction, NULL, 0);
vkd3d_dxbc_compiler_emit_store_dst(compiler, dst, val_id);
}