#pragma once #include "RenderFrameState.h" #include "RenderStateComposer.h" #include "RuntimeSnapshotProvider.h" #include #include class RenderFrameStateResolver { public: explicit RenderFrameStateResolver(RuntimeSnapshotProvider& runtimeSnapshotProvider); void StoreCommittedSnapshot( const RuntimeRenderStateSnapshot& snapshot, const std::vector& committedLayerStates); bool Resolve( const RenderFrameInput& input, const std::vector& committedLayerStates, RuntimeLiveState& liveState, std::vector* commitRequests, RenderFrameState& frameState); private: std::vector ComposeLayerStates( const std::vector& baseStates, RuntimeLiveState& liveState, bool allowCommit, double smoothing, std::vector* commitRequests) const; RuntimeSnapshotProvider& mRuntimeSnapshotProvider; RenderStateComposer mRenderStateComposer; std::vector mCachedLayerRenderStates; uint64_t mCachedRenderStateVersion = 0; uint64_t mCachedParameterStateVersion = 0; unsigned mCachedRenderStateWidth = 0; unsigned mCachedRenderStateHeight = 0; };