summaryrefslogtreecommitdiff
path: root/chromium/third_party/skia/gm/vertices.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/gm/vertices.cpp')
-rw-r--r--chromium/third_party/skia/gm/vertices.cpp39
1 files changed, 32 insertions, 7 deletions
diff --git a/chromium/third_party/skia/gm/vertices.cpp b/chromium/third_party/skia/gm/vertices.cpp
index 683ca464a4a..d01bce2b307 100644
--- a/chromium/third_party/skia/gm/vertices.cpp
+++ b/chromium/third_party/skia/gm/vertices.cpp
@@ -41,7 +41,7 @@ static sk_sp<SkShader> make_shader1(SkScalar shaderScale) {
SK_ColorMAGENTA, SK_ColorBLUE, SK_ColorYELLOW,
};
const SkPoint pts[] = {{kShaderSize / 4, 0}, {3 * kShaderSize / 4, kShaderSize}};
- const SkMatrix localMatrix = SkMatrix::MakeScale(shaderScale, shaderScale);
+ const SkMatrix localMatrix = SkMatrix::Scale(shaderScale, shaderScale);
sk_sp<SkShader> grad = SkGradientShader::MakeLinear(pts, colors, nullptr,
SK_ARRAY_COUNT(colors),
@@ -51,8 +51,8 @@ static sk_sp<SkShader> make_shader1(SkScalar shaderScale) {
return shaderScale == 1
? grad
: sk_make_sp<SkLocalMatrixShader>(
- sk_make_sp<SkLocalMatrixShader>(std::move(grad), SkMatrix::MakeTrans(-10, 0)),
- SkMatrix::MakeTrans(10, 0));
+ sk_make_sp<SkLocalMatrixShader>(std::move(grad), SkMatrix::Translate(-10, 0)),
+ SkMatrix::Translate(10, 0));
}
static sk_sp<SkShader> make_shader2() {
@@ -374,8 +374,8 @@ DEF_SIMPLE_GM(vertices_data_lerp, canvas, 256, 256) {
SkPaint paint;
const char* gProg = R"(
- in fragmentProcessor c0;
- in fragmentProcessor c1;
+ in shader c0;
+ in shader c1;
varying float vtx_lerp;
void main(float2 p, inout half4 color) {
half4 col0 = sample(c0, p);
@@ -384,7 +384,7 @@ DEF_SIMPLE_GM(vertices_data_lerp, canvas, 256, 256) {
}
)";
auto [effect, errorText] = SkRuntimeEffect::Make(SkString(gProg));
- SkMatrix scale = SkMatrix::MakeScale(2);
+ SkMatrix scale = SkMatrix::Scale(2, 2);
sk_sp<SkShader> children[] = {
GetResourceAsImage("images/mandrill_256.png")->makeShader(),
GetResourceAsImage("images/color_wheel.png")->makeShader(scale),
@@ -544,7 +544,7 @@ static sk_sp<SkVertices> make_cone(Attr::Usage u, const char* markerName) {
return builder.detach();
}
-DEF_SIMPLE_GM(vertices_custom_matrices, canvas, 400, 300) {
+DEF_SIMPLE_GM(vertices_custom_matrices, canvas, 400, 400) {
ToolUtils::draw_checkerboard(canvas);
const char* kViewSpace = "local_to_view";
@@ -600,4 +600,29 @@ DEF_SIMPLE_GM(vertices_custom_matrices, canvas, 400, 300) {
draw(150, 250, make_cone(Attr::Usage::kVector, kWorldSpace), vectorProg, 0.5f);
draw(250, 250, make_cone(Attr::Usage::kNormalVector, kWorldSpace), vectorProg, 0.5f);
draw(350, 250, make_cone(Attr::Usage::kPosition, kWorldSpace), vectorProg, 0.5f);
+
+ draw( 50, 350, make_cone(Attr::Usage::kVector, nullptr), vectorProg, 0.5f);
+ draw(150, 350, make_cone(Attr::Usage::kNormalVector, nullptr), vectorProg, 0.5f);
+
+ // For canvas-space positions, color them according to their position relative to the center.
+ // We do this test twice, with and without saveLayer. That ensures that we get the canvas CTM,
+ // not just a local-to-device matrix, which exposes effect authors to an implementation detail.
+
+ const char* ctmPositionProg250 = R"(
+ varying float3 vtx_pos;
+ void main(float2 p, inout half4 color) {
+ color.rgb = (half3(vtx_pos) - half3(250, 350, 0)) / 50 + 0.5;
+ }
+ )";
+ draw(250, 350, make_cone(Attr::Usage::kPosition, nullptr), ctmPositionProg250, 0.5f);
+
+ const char* ctmPositionProg350 = R"(
+ varying float3 vtx_pos;
+ void main(float2 p, inout half4 color) {
+ color.rgb = (half3(vtx_pos) - half3(350, 350, 0)) / 50 + 0.5;
+ }
+ )";
+ canvas->saveLayer({ 300, 300, 400, 400 }, nullptr);
+ draw(350, 350, make_cone(Attr::Usage::kPosition, nullptr), ctmPositionProg350, 0.5f);
+ canvas->restore();
}