195 {
196 if (fPendingUploads->size() > 0) {
198 "# uploads", fPendingUploads->size());
200
201 SkASSERT(fPendingUploads->size() == 0);
202 }
203
204
205
206
207
208
209 if (fComputePathAtlas) {
211 if (fComputePathAtlas->recordDispatches(recorder, &dispatches)) {
212
213 SkASSERT(fPendingDraws->hasCoverageMaskDraws());
214
216 }
217
218 fComputePathAtlas->reset();
219 }
220
221 if (fPendingDraws->renderStepCount() == 0 && fPendingLoadOp !=
LoadOp::kClear) {
222
223
224
225 return;
226 }
227
228
229
230
231
232
233
236 if (!fPendingDraws->dstCopyBounds().isEmptyNegativeOrNaN()) {
238
239 dstCopyPixelBounds = fPendingDraws->dstCopyBounds().makeRoundOut().asSkIRect();
240
241
242
243
244
245
246
250 dstCopyPixelBounds.
size(),
251 fTarget->textureInfo(),
252 "DstCopyTexture",
254 }
256 std::move(fPendingDraws),
257 fTarget,
259 std::make_pair(fPendingLoadOp, fPendingStoreOp),
260 fPendingClearColor,
261 dstCopy,
263 fPendingDraws = std::make_unique<DrawList>();
264
265
268
269 if (pass) {
270 SkASSERT(fTarget.get() == pass->target());
271
272 if (dstCopy) {
273
275 fTarget, dstCopyPixelBounds, dstCopy, {0, 0}));
276 }
277
278 const Caps* caps = recorder->
priv().
caps();
279 auto [loadOp, storeOp] = pass->ops();
281 fTarget->textureInfo());
282
284 pass->depthStencilFlags(),
285 pass->clearColor(),
286 pass->requiresMSAA(),
287 writeSwizzle);
288
292 }
293
294
295
296}
static SkColorType colorType(AImageDecoder *decoder, const AImageDecoderHeaderInfo *headerInfo)
#define TRACE_EVENT_SCOPE_THREAD
bool isTexturable(const TextureInfo &) const
skgpu::Swizzle getWriteSwizzle(SkColorType, const TextureInfo &) const
skia_private::STArray< 1, std::unique_ptr< DispatchGroup > > DispatchGroupList
static sk_sp< ComputeTask > Make(DispatchGroupList dispatchGroups)
static sk_sp< CopyTextureToTextureTask > Make(sk_sp< TextureProxy > srcProxy, SkIRect srcRect, sk_sp< TextureProxy > dstProxy, SkIPoint dstPoint, int dstLevel=0)
const SkImageInfo & imageInfo() const
const SkColorInfo & colorInfo() const
static std::unique_ptr< DrawPass > Make(Recorder *, std::unique_ptr< DrawList >, sk_sp< TextureProxy > target, const SkImageInfo &targetInfo, std::pair< LoadOp, StoreOp >, std::array< float, 4 > clearColor, sk_sp< TextureProxy > dstCopy, SkIPoint dstCopyOffset)
const Caps * caps() const
ResourceProvider * resourceProvider()
static sk_sp< RenderPassTask > Make(DrawPassList, const RenderPassDesc &, sk_sp< TextureProxy > target)
skia_private::STArray< 1, std::unique_ptr< DrawPass > > DrawPassList
static sk_sp< TextureProxy > Make(const Caps *, ResourceProvider *, SkISize dimensions, const TextureInfo &, std::string_view label, skgpu::Budgeted)
static sk_sp< UploadTask > Make(UploadList *)
T & emplace_back(Args &&... args)
constexpr SkISize size() const
static constexpr SkIRect MakeEmpty()
constexpr SkIPoint topLeft() const
static RenderPassDesc Make(const Caps *caps, const TextureInfo &targetInfo, LoadOp loadOp, StoreOp storeOp, SkEnumBitMask< DepthStencilFlags > depthStencilFlags, const std::array< float, 4 > &clearColor, bool requiresMSAA, Swizzle writeSwizzle)
#define TRACE_EVENT_INSTANT0(category_group, name)
#define TRACE_EVENT_INSTANT1(category_group, name, arg1_name, arg1_val)