class GrAuditTrail; class GrContextThreadSafeProxy; class GrDirectContext; class GrDrawingManager; class GrOnFlushCallbackObject; class GrProgramDesc; class GrProgramInfo; class GrProxyProvider; class GrRecordingContextPriv; class GrThreadSafeCache; class SkArenaAlloc; class SkCapabilities; class SkJSONWriter; class SkGaneshRecorder; class SkRecorder;
namespace skcpu { class ContextImpl; class Recorder;
} // namespace skcpu
namespace sktext::gpu { class SubRunAllocator; class TextBlobRedrawCoordinator;
}
class GrRecordingContext : public GrImageContext { public:
~GrRecordingContext() override;
// Provides access to functions that aren't part of the public API.
GrRecordingContextPriv priv(); const GrRecordingContextPriv priv() const; // NOLINT(readability-const-return-type)
// The collection of specialized memory arenas for different types of data recorded by a // GrRecordingContext. Arenas does not maintain ownership of the pools it groups together. class Arenas { public:
Arenas(SkArenaAlloc*, sktext::gpu::SubRunAllocator*);
// For storing pipelines and other complex data as-needed by ops
SkArenaAlloc* recordTimeAllocator() { return fRecordTimeAllocator; }
// There is no going back from this method. It should only be called to control the timing // during abandon or destruction of the context. void destroyDrawingManager();
Arenas arenas() { return fArenas.get(); } // This entry point should only be used for DDL creation where we want the ops' lifetime to // match that of the DDL.
OwnedArenas&& detachArenas();
private: // TODO: store the GrProgramDescs in the 'fRecordTimeData' arena
std::unique_ptr<const GrProgramDesc> fDesc; // The program infos should be stored in 'fRecordTimeData' so do not need to be ref // counted or deleted in the destructor. const GrProgramInfo* fInfo = nullptr;
};
// This entry point gives the recording context a chance to cache the provided // programInfo. The DDL context takes this opportunity to store programInfos as a sidecar // to the DDL. virtualvoid recordProgramInfo(const GrProgramInfo*) {} // This asks the recording context to return any programInfos it may have collected // via the 'recordProgramInfo' call. It is up to the caller to ensure that the lifetime // of the programInfos matches the intended use. For example, in DDL-record mode it // is known that all the programInfos will have been allocated in an arena with the // same lifetime at the DDL itself. virtualvoid detachProgramData(skia_private::TArray<ProgramData>*) {}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.