Add clear function to TestAtlasTextRendering interface
Bug: skia:
Change-Id: I24563abe5e72e57e6764ddf6aca76ccf098cc488
Reviewed-on: https://skia-review.googlesource.com/73640
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp b/tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp
index 543f460..e113096 100644
--- a/tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp
+++ b/tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp
@@ -31,9 +31,11 @@
void* makeTargetHandle(int width, int height) override;
- void targetDeleted(void* target) override;
+ void targetDeleted(void* targetHandle) override;
- SkBitmap readTargetHandle(void* target) override;
+ SkBitmap readTargetHandle(void* targetHandle) override;
+
+ void clearTarget(void* targetHandle, uint32_t color) override;
bool initialized() const { return 0 != fProgram; }
@@ -381,7 +383,7 @@
return nullptr;
}
callgl(Disable, GR_GL_SCISSOR_TEST);
- callgl(ClearColor, 0.5, 0.5, 0.5, 1.0);
+ callgl(ClearColor, 0, 0, 0, 0.0);
callgl(Clear, GR_GL_COLOR_BUFFER_BIT);
checkgl();
Target* target = new Target;
@@ -392,33 +394,47 @@
return target;
}
-void GLTestAtlasTextRenderer::targetDeleted(void* target) {
+void GLTestAtlasTextRenderer::targetDeleted(void* targetHandle) {
auto restore = fContext->makeCurrentAndAutoRestore();
- Target* t = reinterpret_cast<Target*>(target);
- callgl(DeleteFramebuffers, 1, &t->fFBOID);
- callgl(DeleteRenderbuffers, 1, &t->fRBID);
- delete t;
+ Target* target = reinterpret_cast<Target*>(targetHandle);
+ callgl(DeleteFramebuffers, 1, &target->fFBOID);
+ callgl(DeleteRenderbuffers, 1, &target->fRBID);
+ delete target;
}
-SkBitmap GLTestAtlasTextRenderer::readTargetHandle(void* target) {
+SkBitmap GLTestAtlasTextRenderer::readTargetHandle(void* targetHandle) {
auto restore = fContext->makeCurrentAndAutoRestore();
- Target* t = reinterpret_cast<Target*>(target);
+ Target* target = reinterpret_cast<Target*>(targetHandle);
auto info =
- SkImageInfo::Make(t->fWidth, t->fHeight, kRGBA_8888_SkColorType, kPremul_SkAlphaType);
+ SkImageInfo::Make(target->fWidth, target->fHeight, kRGBA_8888_SkColorType, kPremul_SkAlphaType);
SkBitmap bmp;
- bmp.setInfo(info, sizeof(uint32_t) * t->fWidth);
+ bmp.setInfo(info, sizeof(uint32_t) * target->fWidth);
bmp.allocPixels();
- callgl(BindFramebuffer, GR_GL_FRAMEBUFFER, t->fFBOID);
- callgl(ReadPixels, 0, 0, t->fWidth, t->fHeight, GR_GL_RGBA, GR_GL_UNSIGNED_BYTE,
+ callgl(BindFramebuffer, GR_GL_FRAMEBUFFER, target->fFBOID);
+ callgl(ReadPixels, 0, 0, target->fWidth, target->fHeight, GR_GL_RGBA, GR_GL_UNSIGNED_BYTE,
bmp.getPixels());
checkgl();
return bmp;
}
+void GLTestAtlasTextRenderer::clearTarget(void* targetHandle, uint32_t color) {
+ auto restore = fContext->makeCurrentAndAutoRestore();
+
+ Target* target = reinterpret_cast<Target*>(targetHandle);
+ callgl(BindFramebuffer, GR_GL_FRAMEBUFFER, target->fFBOID);
+ callgl(Disable, GR_GL_SCISSOR_TEST);
+ float r = ((color >> 0) & 0xff) / 255.f;
+ float g = ((color >> 8) & 0xff) / 255.f;
+ float b = ((color >> 16) & 0xff) / 255.f;
+ float a = ((color >> 24) & 0xff) / 255.f;
+ callgl(ClearColor, r, g, b, a);
+ callgl(Clear, GR_GL_COLOR_BUFFER_BIT);
+}
+
} // anonymous namespace
namespace sk_gpu_test {