diff options
author | Brian Osman <brianosman@google.com> | 2017-08-10 10:23:25 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-08-10 15:42:25 +0000 |
commit | 71a1889a1432715e515e000f1f4ef277e90e9ae1 (patch) | |
tree | 5965dc540193f8e9d6add43928a0985eb24bb389 /src/gpu/GrCaps.cpp | |
parent | 47238c79c4dd61c8770f45fc36d0cdbaea00b3e2 (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.cpp | 109 |
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(); } |