[SPIR-V] Add missing EnsureBuildPointAvailable in ALU

This commit is contained in:
Triang3l 2020-11-02 12:17:47 +03:00
parent de8b0a85ac
commit 6030a4cf72
1 changed files with 3 additions and 1 deletions

View File

@ -71,17 +71,19 @@ void SpirvShaderTranslator::ProcessAluInstruction(
bool predicate_written_scalar = false; bool predicate_written_scalar = false;
spv::Id scalar_result = spv::Id scalar_result =
ProcessScalarAluOperation(instr, predicate_written_scalar); ProcessScalarAluOperation(instr, predicate_written_scalar);
if (scalar_result != spv::NoResult) { if (scalar_result != spv::NoResult) {
EnsureBuildPointAvailable();
builder_->createStore(scalar_result, var_main_previous_scalar_); builder_->createStore(scalar_result, var_main_previous_scalar_);
} else { } else {
// Special retain_prev case - load ps only if needed and don't store the // Special retain_prev case - load ps only if needed and don't store the
// same value back to ps. // same value back to ps.
if (instr.scalar_result.GetUsedWriteMask()) { if (instr.scalar_result.GetUsedWriteMask()) {
EnsureBuildPointAvailable();
scalar_result = scalar_result =
builder_->createLoad(var_main_previous_scalar_, spv::NoPrecision); builder_->createLoad(var_main_previous_scalar_, spv::NoPrecision);
} }
} }
StoreResult(instr.vector_and_constant_result, vector_result); StoreResult(instr.vector_and_constant_result, vector_result);
StoreResult(instr.scalar_result, scalar_result); StoreResult(instr.scalar_result, scalar_result);