Fixes for primitive handling for uniforms
Updates header mapping to include bool as a primitive, restoring the
GrYUVtoRGBEffect header to its state pre-improved uniforms.
Also fixes the NaN constants specified in the uniform ctype mapping to
actually reference valid constants for SK_FloatNaN.
Bug: skia:
Change-Id: I27848d61c411f2674f66a1532876c7cf22d71be3
Reviewed-on: https://skia-review.googlesource.com/150906
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/effects/GrYUVtoRGBEffect.h b/src/gpu/effects/GrYUVtoRGBEffect.h
index efc1944..9fc597f 100644
--- a/src/gpu/effects/GrYUVtoRGBEffect.h
+++ b/src/gpu/effects/GrYUVtoRGBEffect.h
@@ -24,7 +24,7 @@
const SkMatrix44& uSamplerTransform() const { return fUSamplerTransform; }
const SkMatrix44& vSamplerTransform() const { return fVSamplerTransform; }
const SkMatrix44& colorSpaceMatrix() const { return fColorSpaceMatrix; }
- const bool& nv12() const { return fNv12; }
+ bool nv12() const { return fNv12; }
static std::unique_ptr<GrFragmentProcessor> Make(
sk_sp<GrTextureProxy> ySampler, SkMatrix44 ySamplerTransform,
sk_sp<GrTextureProxy> uSampler, SkMatrix44 uSamplerTransform,
diff --git a/src/sksl/SkSLCPPUniformCTypes.cpp b/src/sksl/SkSLCPPUniformCTypes.cpp
index 69e0498..6af8e17 100644
--- a/src/sksl/SkSLCPPUniformCTypes.cpp
+++ b/src/sksl/SkSLCPPUniformCTypes.cpp
@@ -163,25 +163,25 @@
REGISTER("SkPoint", { "half2", "float2", "double2" } ,
"${pdman}.set2f(${uniform}, ${var}.fX, ${var}.fY)", // to gpu
- "SkPoint::Make(NaN, NaN)"), // default value
+ "SkPoint::Make(SK_FloatNaN, SK_FloatNaN)"), // default value
REGISTER("SkIPoint", { "int2", "short2", "byte2" },
"${pdman}.set2i(${uniform}, ${var}.fX, ${var}.fY)", // to gpu
- "SkIPoint::Make(~0, ~0)"), // default value
+ "SkIPoint::Make(SK_NaN32, SK_NaN32)"), // default value
REGISTER("SkMatrix", { "half3x3", "float3x3", "double3x3" },
"${pdman}.setSkMatrix(${uniform}, ${var})", // to gpu
- "SkMatrix::MakeScale(NaN)", // default value
+ "SkMatrix::MakeScale(SK_FloatNaN)", // default value
"!${oldVar}.cheapEqualTo(${newVar})"), // dirty check
REGISTER("SkMatrix44", { "half4x4", "float4x4", "double4x4" },
"${pdman}.setSkMatrix44(${uniform}, ${var})", // to gpu
- "SkMatrix::MakeScale(NaN)", // default value
+ "SkMatrix::MakeScale(SK_FloatNaN)", // default value
"!${oldVar}.cheapEqualTo(${newVar})"), // dirty check
REGISTER("float", { "half", "float", "double" },
"${pdman}.set1f(${uniform}, ${var})", // to gpu
- "NaN"), // default value
+ "SK_FloatNaN"), // default value
REGISTER("int32_t", { "int", "short", "byte" },
"${pdman}.set1i(${uniform}, ${var})", // to gpu
diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp
index 90d96f7..17bcfa0 100644
--- a/src/sksl/SkSLHCodeGenerator.cpp
+++ b/src/sksl/SkSLHCodeGenerator.cpp
@@ -76,7 +76,7 @@
String HCodeGenerator::AccessType(const Context& context, const Type& type,
const Layout& layout) {
- static const std::set<String> primitiveTypes = { "int32_t", "float", "SkPMColor" };
+ static const std::set<String> primitiveTypes = { "int32_t", "float", "bool", "SkPMColor" };
String fieldType = FieldType(context, type, layout);
bool isPrimitive = primitiveTypes.find(fieldType) != primitiveTypes.end();