aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrCaps.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-08-10 10:23:25 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-10 15:42:25 +0000
commit71a1889a1432715e515e000f1f4ef277e90e9ae1 (patch)
tree5965dc540193f8e9d6add43928a0985eb24bb389 /src/gpu/GrCaps.cpp
parent47238c79c4dd61c8770f45fc36d0cdbaea00b3e2 (diff)
Revert "Revert "GrContext::dump that produces JSON formatted output""
This reverts commit 0f450acd76fd58a2f7464f99869ed6afbfac303c. Bug: skia: Change-Id: I97428fbbc6d82bf8b186ec5fdbf1a939c00e4126 Reviewed-on: https://skia-review.googlesource.com/32726 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/GrCaps.cpp')
-rw-r--r--src/gpu/GrCaps.cpp109
1 files changed, 56 insertions, 53 deletions
diff --git a/src/gpu/GrCaps.cpp b/src/gpu/GrCaps.cpp
index 67a8e6859b..00475e63ca 100644
--- a/src/gpu/GrCaps.cpp
+++ b/src/gpu/GrCaps.cpp
@@ -8,6 +8,7 @@
#include "GrCaps.h"
#include "GrContextOptions.h"
#include "GrWindowRectangles.h"
+#include "SkJSONWriter.h"
static const char* pixel_config_name(GrPixelConfig config) {
switch (config) {
@@ -116,44 +117,45 @@ static SkString map_flags_to_string(uint32_t flags) {
return str;
}
-SkString GrCaps::dump() const {
- SkString r;
- static const char* gNY[] = {"NO", "YES"};
- r.appendf("MIP Map Support : %s\n", gNY[fMipMapSupport]);
- r.appendf("NPOT Texture Tile Support : %s\n", gNY[fNPOTTextureTileSupport]);
- r.appendf("sRGB Support : %s\n", gNY[fSRGBSupport]);
- r.appendf("sRGB Write Control : %s\n", gNY[fSRGBWriteControl]);
- r.appendf("Discard Render Target Support : %s\n", gNY[fDiscardRenderTargetSupport]);
- r.appendf("Reuse Scratch Textures : %s\n", gNY[fReuseScratchTextures]);
- r.appendf("Reuse Scratch Buffers : %s\n", gNY[fReuseScratchBuffers]);
- r.appendf("Gpu Tracing Support : %s\n", gNY[fGpuTracingSupport]);
- r.appendf("Oversized Stencil Support : %s\n", gNY[fOversizedStencilSupport]);
- r.appendf("Texture Barrier Support : %s\n", gNY[fTextureBarrierSupport]);
- r.appendf("Sample Locations Support : %s\n", gNY[fSampleLocationsSupport]);
- r.appendf("Multisample disable support : %s\n", gNY[fMultisampleDisableSupport]);
- r.appendf("Instance Attrib Support : %s\n", gNY[fInstanceAttribSupport]);
- r.appendf("Uses Mixed Samples : %s\n", gNY[fUsesMixedSamples]);
- r.appendf("Prefer client-side dynamic buffers : %s\n", gNY[fPreferClientSideDynamicBuffers]);
- r.appendf("Full screen clear is free : %s\n", gNY[fFullClearIsFree]);
- r.appendf("Must clear buffer memory : %s\n", gNY[fMustClearUploadedBufferData]);
- r.appendf("Sample shading support : %s\n", gNY[fSampleShadingSupport]);
- r.appendf("Fence sync support : %s\n", gNY[fFenceSyncSupport]);
- r.appendf("Cross context texture support : %s\n", gNY[fCrossContextTextureSupport]);
-
- r.appendf("Draw Instead of Clear [workaround] : %s\n", gNY[fUseDrawInsteadOfClear]);
- r.appendf("Prefer VRAM Use over flushes [workaround] : %s\n", gNY[fPreferVRAMUseOverFlushes]);
+void GrCaps::dumpJSON(SkJSONWriter* writer) const {
+ writer->beginObject();
+
+ writer->appendBool("MIP Map Support", fMipMapSupport);
+ writer->appendBool("NPOT Texture Tile Support", fNPOTTextureTileSupport);
+ writer->appendBool("sRGB Support", fSRGBSupport);
+ writer->appendBool("sRGB Write Control", fSRGBWriteControl);
+ writer->appendBool("sRGB Decode Disable", fSRGBDecodeDisableSupport);
+ writer->appendBool("Discard Render Target Support", fDiscardRenderTargetSupport);
+ writer->appendBool("Reuse Scratch Textures", fReuseScratchTextures);
+ writer->appendBool("Reuse Scratch Buffers", fReuseScratchBuffers);
+ writer->appendBool("Gpu Tracing Support", fGpuTracingSupport);
+ writer->appendBool("Oversized Stencil Support", fOversizedStencilSupport);
+ writer->appendBool("Texture Barrier Support", fTextureBarrierSupport);
+ writer->appendBool("Sample Locations Support", fSampleLocationsSupport);
+ writer->appendBool("Multisample disable support", fMultisampleDisableSupport);
+ writer->appendBool("Instance Attrib Support", fInstanceAttribSupport);
+ writer->appendBool("Uses Mixed Samples", fUsesMixedSamples);
+ writer->appendBool("Prefer client-side dynamic buffers", fPreferClientSideDynamicBuffers);
+ writer->appendBool("Full screen clear is free", fFullClearIsFree);
+ writer->appendBool("Must clear buffer memory", fMustClearUploadedBufferData);
+ writer->appendBool("Sample shading support", fSampleShadingSupport);
+ writer->appendBool("Fence sync support", fFenceSyncSupport);
+ writer->appendBool("Cross context texture support", fCrossContextTextureSupport);
+
+ writer->appendBool("Draw Instead of Clear [workaround]", fUseDrawInsteadOfClear);
+ writer->appendBool("Prefer VRAM Use over flushes [workaround]", fPreferVRAMUseOverFlushes);
if (this->advancedBlendEquationSupport()) {
- r.appendf("Advanced Blend Equation Blacklist : 0x%x\n", fAdvBlendEqBlacklist);
+ writer->appendHexU32("Advanced Blend Equation Blacklist", fAdvBlendEqBlacklist);
}
- r.appendf("Max Vertex Attributes : %d\n", fMaxVertexAttributes);
- r.appendf("Max Texture Size : %d\n", fMaxTextureSize);
- r.appendf("Max Render Target Size : %d\n", fMaxRenderTargetSize);
- r.appendf("Max Color Sample Count : %d\n", fMaxColorSampleCount);
- r.appendf("Max Stencil Sample Count : %d\n", fMaxStencilSampleCount);
- r.appendf("Max Raster Samples : %d\n", fMaxRasterSamples);
- r.appendf("Max Window Rectangles : %d\n", fMaxWindowRectangles);
+ writer->appendS32("Max Vertex Attributes", fMaxVertexAttributes);
+ writer->appendS32("Max Texture Size", fMaxTextureSize);
+ writer->appendS32("Max Render Target Size", fMaxRenderTargetSize);
+ writer->appendS32("Max Color Sample Count", fMaxColorSampleCount);
+ writer->appendS32("Max Stencil Sample Count", fMaxStencilSampleCount);
+ writer->appendS32("Max Raster Samples", fMaxRasterSamples);
+ writer->appendS32("Max Window Rectangles", fMaxWindowRectangles);
static const char* kInstancedSupportNames[] = {
"None",
@@ -167,8 +169,7 @@ SkString GrCaps::dump() const {
GR_STATIC_ASSERT(3 == (int)InstancedSupport::kMixedSampled);
GR_STATIC_ASSERT(4 == SK_ARRAY_COUNT(kInstancedSupportNames));
- r.appendf("Instanced Support : %s\n",
- kInstancedSupportNames[(int)fInstancedSupport]);
+ writer->appendString("Instanced Support", kInstancedSupportNames[(int)fInstancedSupport]);
static const char* kBlendEquationSupportNames[] = {
"Basic",
@@ -180,30 +181,32 @@ SkString GrCaps::dump() const {
GR_STATIC_ASSERT(2 == kAdvancedCoherent_BlendEquationSupport);
GR_STATIC_ASSERT(SK_ARRAY_COUNT(kBlendEquationSupportNames) == kLast_BlendEquationSupport + 1);
- r.appendf("Blend Equation Support : %s\n",
- kBlendEquationSupportNames[fBlendEquationSupport]);
- r.appendf("Map Buffer Support : %s\n",
- map_flags_to_string(fMapBufferFlags).c_str());
+ writer->appendString("Blend Equation Support",
+ kBlendEquationSupportNames[fBlendEquationSupport]);
+ writer->appendString("Map Buffer Support", map_flags_to_string(fMapBufferFlags).c_str());
SkASSERT(!this->isConfigRenderable(kUnknown_GrPixelConfig, false));
SkASSERT(!this->isConfigRenderable(kUnknown_GrPixelConfig, true));
+ SkASSERT(!this->isConfigTexturable(kUnknown_GrPixelConfig));
+
+ writer->beginArray("configs");
- for (size_t i = 1; i < kGrPixelConfigCnt; ++i) {
+ for (size_t i = 1; i < kGrPixelConfigCnt; ++i) {
GrPixelConfig config = static_cast<GrPixelConfig>(i);
- r.appendf("%s is renderable: %s, with MSAA: %s\n",
- pixel_config_name(config),
- gNY[this->isConfigRenderable(config, false)],
- gNY[this->isConfigRenderable(config, true)]);
+ writer->beginObject();
+ writer->appendString("name", pixel_config_name(config));
+ writer->appendBool("renderable", this->isConfigRenderable(config, false));
+ writer->appendBool("renderableMSAA", this->isConfigRenderable(config, true));
+ writer->appendBool("texturable", this->isConfigTexturable(config));
+ writer->endObject();
}
- SkASSERT(!this->isConfigTexturable(kUnknown_GrPixelConfig));
+ writer->endArray();
- for (size_t i = 1; i < kGrPixelConfigCnt; ++i) {
- GrPixelConfig config = static_cast<GrPixelConfig>(i);
- r.appendf("%s is uploadable to a texture: %s\n",
- pixel_config_name(config),
- gNY[this->isConfigTexturable(config)]);
- }
+ this->onDumpJSON(writer);
+
+ writer->appendName("shaderCaps");
+ this->shaderCaps()->dumpJSON(writer);
- return r;
+ writer->endObject();
}