मेमोरी और रेंडरिंग प्रदर्शन
12 मार्च 2026 ·संस्करण 0.3.4
Fog Panther v0.3.4 कई आंतरिक ऑप्टिमाइज़ेशन लेकर आता है जो मेमोरी खपत को बहुत कम करते हैं और रेंडरिंग प्रदर्शन में सुधार करते हैं, विशेष रूप से बड़े दस्तावेज़ों और लंबे संपादन सत्रों में।
कम्प्रेस्ड पूर्ववत इतिहास
पूर्ववत सिस्टम अब टाइल स्नैपशॉट को पूरी अनकम्प्रेस्ड कॉपी के बजाय zstd-कम्प्रेस्ड डेटा के रूप में संग्रहीत करता है। हर ब्रश स्ट्रोक, फ़िल या फ़िल्टर लागू करना, जो पहले 16 KB के रॉ टाइल बफ़र संग्रहीत करता था, अब उन्हें कैप्चर के समय zstd लेवल 1 से कम्प्रेस करता है, जो लगभग 500 MB/s की गति से चलता है।
परिणाम: टाइल की सामग्री के आधार पर, हर पूर्ववत चरण के लिए 3 से 10 गुना कम मेमोरी। 256 MB का निश्चित पूर्ववत बजट, जिसमें पहले लगभग 80 बड़े ब्रश स्ट्रोक आते थे, अब व्यावहारिक रूप से 250 से 800 तक रख सकता है। पूर्ववत और फिर से करें तुरंत होते हैं - एक टाइल को डीकम्प्रेस करने में लगभग 11 माइक्रोसेकंड लगते हैं।
डिस्क पर FOG फ़ॉर्मेट पहले से zstd कम्प्रेशन का उपयोग करता था, इसलिए सहेजी गई फ़ाइलें अपरिवर्तित हैं। केवल मेमोरी के अंदर का प्रतिनिधित्व प्रभावित होता है।
डिस्प्ले सरफ़ेस कैशिंग
गैर-RGBA8 पिक्सेल फ़ॉर्मेट - RGBA16, CMYKA, ग्रेस्केल - को स्क्रीन डिस्प्ले के लिए उपयोग होने वाला Cairo ARGB32 सरफ़ेस बनाने हेतु फ़ॉर्मेट रूपांतरण की ज़रूरत होती है। पहले, यह रूपांतरण हर फ़्रेम पर हर दृश्यमान टाइल के लिए चलता था।
टाइलें अब पहले रूपांतरण के बाद अपना डिस्प्ले सरफ़ेस कैश कर लेती हैं। जब भी टाइल का डेटा बदलता है, कैश अपने आप अमान्य हो जाता है। 200 दृश्यमान टाइलों वाले 16-बिट दस्तावेज़ में, इससे पैनिंग और ज़ूमिंग के दौरान प्रति फ़्रेम 200 फ़ॉर्मेट रूपांतरण समाप्त हो जाते हैं।
टाइल कैश की अग्रिम ट्रिमिंग
टाइल कैश पहले प्रविष्टियाँ हटाने से पहले अपनी मेमोरी सीमा पार होने तक प्रतीक्षा करता था, जिससे मेमोरी थोड़ी देर के लिए सीमा से ऊपर चली जाती थी। अब यह 90% क्षमता पर ट्रिमिंग शुरू करता है और 85% तक ट्रिम करता है, जिससे एक हिस्टैरिसीस बैंड बनता है जो अगली प्रविष्टि पर बार-बार होने वाले निष्कासन को रोकता है।
चेकरबोर्ड पैटर्न कैशिंग
पारदर्शिता का चेकरबोर्ड पैटर्न - जो हर फ़्रेम पर हर दस्तावेज़ के पीछे बनाया जाता है - पहले हर रेंडर पास में बनाया और नष्ट किया जाता था। अब यह एक बार बनाया जाता है और प्रोसेस के पूरे जीवनकाल तक दोबारा उपयोग होता है।
बग सुधार
इस रिलीज़ में ऑप्टिमाइज़ेशन कार्य की समीक्षा के दौरान पाए गए कई शुद्धता सुधार भी शामिल हैं:
- डिस्प्ले कैश अब केवल रॉ डेटा एक्सेसर ही नहीं, बल्कि पिक्सेल लिखने वाले सभी फ़ंक्शन द्वारा सही ढंग से अमान्य किया जाता है
- जब कोई कम्प्रेस्ड टाइल डीकम्प्रेस होकर void बनती है, तो इतिहास सीरियलाइज़ेशन अब गलत फ़्लैग बाइट अनुक्रम नहीं लिखता
- मिटाने वाले ऑपरेशन को फिर से करने पर अब void टाइलें सही ढंग से बहाल होती हैं
- किसी कैश की गई टाइल को अलग पिक्सेल फ़ॉर्मेट वाली टाइल से बदलने पर टाइल कैश की मेमोरी गणना अब सही रहती है
- चेकरबोर्ड पैटर्न का इनिशियलाइज़ेशन अब थ्रेड-सेफ़ है