Skip to content

Commit e41fa2d

Browse files
brianosmanSkia Commit-Bot
authored andcommitted
Add vertices_perspective GM to demonstrate skbug/10069
Bug: skia:10069 Change-Id: I08814be483a630b0583347793e96ac628fe77bc8 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/278316 Reviewed-by: Michael Ludwig <michaelludwig@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
1 parent e965438 commit e41fa2d

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

gm/vertices.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "include/private/SkTDArray.h"
2626
#include "include/utils/SkRandom.h"
2727
#include "src/shaders/SkLocalMatrixShader.h"
28+
#include "tools/ToolUtils.h"
2829

2930
#include <initializer_list>
3031
#include <utility>
@@ -295,3 +296,42 @@ DEF_SIMPLE_GM(vertices_data, canvas, 500, 500) {
295296
// paint.setShader(sksl_shader);
296297
canvas->drawVertices(vert, paint);
297298
}
299+
300+
// Test case for skbug.com/10069. We need to draw the vertices twice (with different matrices) to
301+
// trigger the bug.
302+
DEF_SIMPLE_GM(vertices_perspective, canvas, 256, 256) {
303+
SkPaint paint;
304+
paint.setShader(ToolUtils::create_checkerboard_shader(SK_ColorBLACK, SK_ColorWHITE, 32));
305+
306+
SkRect r = SkRect::MakeWH(128, 128);
307+
308+
SkPoint pos[4];
309+
r.toQuad(pos);
310+
auto verts = SkVertices::MakeCopy(SkVertices::kTriangleFan_VertexMode, 4, pos, pos, nullptr);
311+
312+
SkMatrix persp;
313+
persp.setPerspY(SK_Scalar1 / 100);
314+
315+
canvas->save();
316+
canvas->concat(persp);
317+
canvas->drawRect(r, paint);
318+
canvas->restore();
319+
320+
canvas->save();
321+
canvas->translate(r.width(), 0);
322+
canvas->concat(persp);
323+
canvas->drawRect(r, paint);
324+
canvas->restore();
325+
326+
canvas->save();
327+
canvas->translate(0, r.height());
328+
canvas->concat(persp);
329+
canvas->drawVertices(verts, paint);
330+
canvas->restore();
331+
332+
canvas->save();
333+
canvas->translate(r.width(), r.height());
334+
canvas->concat(persp);
335+
canvas->drawVertices(verts, paint);
336+
canvas->restore();
337+
}

0 commit comments

Comments
 (0)