author | Kartikaya Gupta <kgupta@mozilla.com> |
Mon, 10 Jul 2017 10:15:24 -0400 | |
changeset 606154 | 1cb0e892c609e132857e8237f9c6199803a3535d |
parent 606153 | ae77bfb68192c8083ba9200a90dfcddccc1216a4 |
child 606155 | a8e6223bc95b99609b64114d8325ea5d1a2ecc5e |
push id | 67621 |
push user | kgupta@mozilla.com |
push date | Mon, 10 Jul 2017 14:29:00 +0000 |
reviewers | Bas |
bugs | 1378355 |
milestone | 56.0a1 |
--- a/gfx/2d/Factory.cpp +++ b/gfx/2d/Factory.cpp @@ -210,27 +210,16 @@ DrawEventRecorder *Factory::mRecorder; mozilla::gfx::Config* Factory::sConfig = nullptr; void Factory::Init(const Config& aConfig) { MOZ_ASSERT(!sConfig); sConfig = new Config(aConfig); - // Make sure we don't completely break rendering because of a typo in the - // pref or whatnot. - const int32_t kMinAllocPref = 10000000; - const int32_t kMinSizePref = 2048; - if (sConfig->mMaxAllocSize < kMinAllocPref) { - sConfig->mMaxAllocSize = kMinAllocPref; - } - if (sConfig->mMaxTextureSize < kMinSizePref) { - sConfig->mMaxTextureSize = kMinSizePref; - } - #ifdef MOZ_ENABLE_FREETYPE mFTLock = new Mutex("Factory::mFTLock"); #endif } void Factory::ShutDown() {
--- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -843,28 +843,46 @@ gfxPlatform::IsDXInterop2Blocked() int32_t status; if (!NS_SUCCEEDED(gfxInfo->GetFeatureStatus(nsIGfxInfo::FEATURE_DX_INTEROP2, blockId, &status))) { return true; } return status != nsIGfxInfo::FEATURE_STATUS_OK; } +/* static */ int32_t +gfxPlatform::MaxTextureSize() +{ + // Make sure we don't completely break rendering because of a typo in the + // pref or whatnot. + const int32_t kMinSizePref = 2048; + return std::max(kMinSizePref, gfxPrefs::MaxTextureSizeDoNotUseDirectly()); +} + +/* static */ int32_t +gfxPlatform::MaxAllocSize() +{ + // Make sure we don't completely break rendering because of a typo in the + // pref or whatnot. + const int32_t kMinAllocPref = 10000000; + return std::max(kMinAllocPref, gfxPrefs::MaxAllocSizeDoNotUseDirectly()); +} + /* static */ void gfxPlatform::InitMoz2DLogging() { - auto fwd = new CrashStatsLogForwarder("GraphicsCriticalError"); - fwd->SetCircularBufferSize(gfxPrefs::GfxLoggingCrashLength()); - - mozilla::gfx::Config cfg; - cfg.mLogForwarder = fwd; - cfg.mMaxTextureSize = gfxPrefs::MaxTextureSize(); - cfg.mMaxAllocSize = gfxPrefs::MaxAllocSize(); - - gfx::Factory::Init(cfg); + auto fwd = new CrashStatsLogForwarder("GraphicsCriticalError"); + fwd->SetCircularBufferSize(gfxPrefs::GfxLoggingCrashLength()); + + mozilla::gfx::Config cfg; + cfg.mLogForwarder = fwd; + cfg.mMaxTextureSize = gfxPlatform::MaxTextureSize(); + cfg.mMaxAllocSize = gfxPlatform::MaxAllocSize(); + + gfx::Factory::Init(cfg); } /* static */ bool gfxPlatform::IsHeadless() { static bool initialized = false; static bool headless = false; if (!initialized) {
--- a/gfx/thebes/gfxPlatform.h +++ b/gfx/thebes/gfxPlatform.h @@ -184,16 +184,18 @@ public: static void InitLayersIPC(); static void ShutdownLayersIPC(); /** * Initialize ScrollMetadata statics. Does not depend on gfxPlatform. */ static void InitNullMetadata(); + static int32_t MaxTextureSize(); + static int32_t MaxAllocSize(); static void InitMoz2DLogging(); static bool IsHeadless(); /** * Create an offscreen surface of the given dimensions * and image format. */
--- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -441,18 +441,20 @@ private: DECL_GFX_PREF(Live, "gfx.layerscope.port", LayerScopePort, int32_t, 23456); // Note that "gfx.logging.level" is defined in Logging.h. DECL_GFX_PREF(Live, "gfx.logging.level", GfxLoggingLevel, int32_t, mozilla::gfx::LOG_DEFAULT); DECL_GFX_PREF(Once, "gfx.logging.crash.length", GfxLoggingCrashLength, uint32_t, 16); DECL_GFX_PREF(Live, "gfx.logging.painted-pixel-count.enabled",GfxLoggingPaintedPixelCountEnabled, bool, false); // The maximums here are quite conservative, we can tighten them if problems show up. DECL_GFX_PREF(Once, "gfx.logging.texture-usage.enabled", GfxLoggingTextureUsageEnabled, bool, false); DECL_GFX_PREF(Once, "gfx.logging.peak-texture-usage.enabled",GfxLoggingPeakTextureUsageEnabled, bool, false); - DECL_GFX_PREF(Once, "gfx.max-alloc-size", MaxAllocSize, int32_t, (int32_t)500000000); - DECL_GFX_PREF(Once, "gfx.max-texture-size", MaxTextureSize, int32_t, (int32_t)32767); + // Use gfxPlatform::MaxAllocSize instead of the pref directly + DECL_GFX_PREF(Once, "gfx.max-alloc-size", MaxAllocSizeDoNotUseDirectly, int32_t, (int32_t)500000000); + // Use gfxPlatform::MaxTextureSize instead of the pref directly + DECL_GFX_PREF(Once, "gfx.max-texture-size", MaxTextureSizeDoNotUseDirectly, int32_t, (int32_t)32767); DECL_GFX_PREF(Live, "gfx.partialpresent.force", PartialPresent, int32_t, 0); DECL_GFX_PREF(Live, "gfx.perf-warnings.enabled", PerfWarnings, bool, false); DECL_GFX_PREF(Live, "gfx.SurfaceTexture.detach.enabled", SurfaceTextureDetachEnabled, bool, true); DECL_GFX_PREF(Live, "gfx.testing.device-reset", DeviceResetForTesting, int32_t, 0); DECL_GFX_PREF(Live, "gfx.testing.device-fail", DeviceFailForTesting, bool, false); DECL_GFX_PREF(Once, "gfx.text.disable-aa", DisableAllTextAA, bool, false); DECL_GFX_PREF(Live, "gfx.ycbcr.accurate-conversion", YCbCrAccurateConversion, bool, false);