public BackgroundEffectRenderer(Effect effect, EffectConfigToken effectToken, RenderArgs dstArgs, RenderArgs srcArgs, PdnRegion renderRegion, IRenderer <ColorAlpha8> clipMaskRenderer, int tileCount, int workerThreads) { this.effect = effect; this.effectToken = effectToken; this.dstArgs = dstArgs; this.srcArgs = srcArgs; this.renderRegion = renderRegion; this.renderRegion.Intersect(dstArgs.Bounds); this.tileCount = tileCount; if (effect.CheckForEffectFlags(EffectFlags.None | EffectFlags.SingleRenderCall)) { this.tileCount = 1; } this.tileRegions = this.SliceUpRegion(renderRegion, this.tileCount, dstArgs.Bounds); this.tilePdnRegions = new PdnRegion[this.tileRegions.Length]; for (int i = 0; i < this.tileRegions.Length; i++) { this.tilePdnRegions[i] = PdnRegion.FromRectangles(this.tileRegions[i]); } this.workerThreads = workerThreads; if (effect.CheckForEffectFlags(EffectFlags.None | EffectFlags.SingleThreaded)) { this.workerThreads = 1; } this.clipMaskRenderer = clipMaskRenderer; this.threadPool = new EffectRendererWorkItemQueue(WorkItemDispatcher.Default, WorkItemQueuePriority.Normal, workerThreads); }
public BackgroundEffectRenderer( Effect effect, EffectConfigToken effectToken, RenderArgs dstArgs, RenderArgs srcArgs, PdnRegion renderRegion, IRenderer <ColorAlpha8> clipMaskRenderer, // may be null int tileCount, int workerThreads) { this.effect = effect; this.effectToken = effectToken; this.dstArgs = dstArgs; this.srcArgs = srcArgs; this.renderRegion = renderRegion; this.renderRegion.Intersect(dstArgs.Bounds); this.tileCount = tileCount; if (effect.Options.RenderingSchedule == EffectRenderingSchedule.None) { this.tileCount = 1; } tileRegions = SliceUpRegion(renderRegion, this.tileCount, dstArgs.Bounds); tilePdnRegions = new PdnRegion[tileRegions.Length]; for (int i = 0; i < tileRegions.Length; ++i) { PdnRegion pdnRegion = PdnRegion.FromRectangles(tileRegions[i]); tilePdnRegions[i] = pdnRegion; } this.workerThreads = workerThreads; if (effect.Options.Flags.HasFlag(EffectFlags.SingleThreaded)) { this.workerThreads = 1; } this.clipMaskRenderer = clipMaskRenderer; threadPool = new PrivateThreadPool(this.workerThreads, false); }