Add RelaxedPrecision decoration to out-param temp vars.
Previously we were not honoring the variable precision at all (passing
null to nextId).
Change-Id: I0e217e6c0d3d701dc0540d4d4069a3597abdad11
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/446640
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
index c92eaa5..56f8a63 100644
--- a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp
@@ -1196,7 +1196,7 @@
// copy it into a temp, call the function, read the value out of the temp, and then
// update the lvalue.
tmpValueId = lv->load(out);
- tmpVar = this->nextId(nullptr);
+ tmpVar = this->nextId(&arguments[i]->type());
tempVars.push_back(TempVar{tmpVar, &arguments[i]->type(), std::move(lv)});
}
} else {
diff --git a/tests/sksl/shared/OutParams.asm.frag b/tests/sksl/shared/OutParams.asm.frag
index 7ff2a63..9725234 100644
--- a/tests/sksl/shared/OutParams.asm.frag
+++ b/tests/sksl/shared/OutParams.asm.frag
@@ -133,14 +133,17 @@
OpDecorate %h3 RelaxedPrecision
OpDecorate %h4 RelaxedPrecision
OpDecorate %254 RelaxedPrecision
+OpDecorate %255 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
+OpDecorate %260 RelaxedPrecision
OpDecorate %262 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %264 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
+OpDecorate %267 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %270 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
@@ -148,10 +151,13 @@
OpDecorate %h3x3 RelaxedPrecision
OpDecorate %h4x4 RelaxedPrecision
OpDecorate %279 RelaxedPrecision
+OpDecorate %280 RelaxedPrecision
OpDecorate %282 RelaxedPrecision
OpDecorate %286 RelaxedPrecision
+OpDecorate %287 RelaxedPrecision
OpDecorate %289 RelaxedPrecision
OpDecorate %293 RelaxedPrecision
+OpDecorate %294 RelaxedPrecision
OpDecorate %296 RelaxedPrecision
OpDecorate %365 RelaxedPrecision
OpDecorate %372 RelaxedPrecision
diff --git a/tests/sksl/shared/OutParamsNoInline.asm.frag b/tests/sksl/shared/OutParamsNoInline.asm.frag
index 7ff2a63..9725234 100644
--- a/tests/sksl/shared/OutParamsNoInline.asm.frag
+++ b/tests/sksl/shared/OutParamsNoInline.asm.frag
@@ -133,14 +133,17 @@
OpDecorate %h3 RelaxedPrecision
OpDecorate %h4 RelaxedPrecision
OpDecorate %254 RelaxedPrecision
+OpDecorate %255 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
+OpDecorate %260 RelaxedPrecision
OpDecorate %262 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %264 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
+OpDecorate %267 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %270 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
@@ -148,10 +151,13 @@
OpDecorate %h3x3 RelaxedPrecision
OpDecorate %h4x4 RelaxedPrecision
OpDecorate %279 RelaxedPrecision
+OpDecorate %280 RelaxedPrecision
OpDecorate %282 RelaxedPrecision
OpDecorate %286 RelaxedPrecision
+OpDecorate %287 RelaxedPrecision
OpDecorate %289 RelaxedPrecision
OpDecorate %293 RelaxedPrecision
+OpDecorate %294 RelaxedPrecision
OpDecorate %296 RelaxedPrecision
OpDecorate %365 RelaxedPrecision
OpDecorate %372 RelaxedPrecision
diff --git a/tests/sksl/shared/OutParamsTricky.asm.frag b/tests/sksl/shared/OutParamsTricky.asm.frag
index 8eafae6..4086cad 100644
--- a/tests/sksl/shared/OutParamsTricky.asm.frag
+++ b/tests/sksl/shared/OutParamsTricky.asm.frag
@@ -35,6 +35,7 @@
OpDecorate %t RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
+OpDecorate %50 RelaxedPrecision
OpDecorate %54 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %56 RelaxedPrecision