Move GrTextureOp to skgpu::v1 namespace
Bug: skia:11837
Change-Id: Ie99b1c512885404351d6917bbea751d99a2ca23e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/442797
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/ops/TextureOp.h b/src/gpu/ops/TextureOp.h
new file mode 100644
index 0000000..d976c90
--- /dev/null
+++ b/src/gpu/ops/TextureOp.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef TextureOp_DEFINED
+#define TextureOp_DEFINED
+
+#include "include/core/SkCanvas.h"
+#include "include/core/SkRefCnt.h"
+#include "include/private/GrTypesPriv.h"
+#include "src/gpu/GrColor.h"
+#include "src/gpu/GrSamplerState.h"
+#include "src/gpu/ops/GrOp.h"
+
+struct DrawQuad;
+class GrClip;
+class GrColorSpaceXform;
+class GrDrawOp;
+class GrTextureProxy;
+struct GrTextureSetEntry;
+struct SkRect;
+class SkMatrix;
+
+namespace skgpu::v1 {
+
+class SurfaceDrawContext;
+
+class TextureOp {
+public:
+
+ /**
+ * Controls whether saturate() is called after the texture is color-converted to ensure all
+ * color values are in 0..1 range.
+ */
+ enum class Saturate : bool { kNo = false, kYes = true };
+
+ /**
+ * Creates an op that draws a sub-quadrilateral of a texture. The passed color is modulated by
+ * the texture's color. 'deviceQuad' specifies the device-space coordinates to draw, using
+ * 'localQuad' to map into the proxy's texture space. If non-null, 'subset' represents the
+ * boundary for the strict src rect constraint. If GrAAType is kCoverage then AA is applied to
+ * the edges indicated by GrQuadAAFlags. Otherwise, GrQuadAAFlags is ignored.
+ *
+ * This is functionally very similar to GrFillRectOp::Make, except that the GrPaint has been
+ * deconstructed into the texture, filter, modulating color, and blend mode. When blend mode is
+ * src over, this will return a GrFillRectOp with a paint that samples the proxy.
+ */
+ static GrOp::Owner Make(GrRecordingContext*,
+ GrSurfaceProxyView,
+ SkAlphaType srcAlphaType,
+ sk_sp<GrColorSpaceXform>,
+ GrSamplerState::Filter,
+ GrSamplerState::MipmapMode,
+ const SkPMColor4f&,
+ Saturate,
+ SkBlendMode,
+ GrAAType,
+ DrawQuad*,
+ const SkRect* subset = nullptr);
+
+#if SK_GPU_V1
+ // Automatically falls back to using one GrFillRectOp per entry if dynamic states are not
+ // supported, or if the blend mode is not src-over. 'cnt' is the size of the entry array.
+ // 'proxyCnt' <= 'cnt' and represents the number of proxy switches within the array.
+ static void AddTextureSetOps(skgpu::v1::SurfaceDrawContext*,
+ const GrClip*,
+ GrRecordingContext*,
+ GrTextureSetEntry[],
+ int cnt,
+ int proxyRunCnt,
+ GrSamplerState::Filter,
+ GrSamplerState::MipmapMode,
+ Saturate,
+ SkBlendMode,
+ GrAAType,
+ SkCanvas::SrcRectConstraint,
+ const SkMatrix& viewMatrix,
+ sk_sp<GrColorSpaceXform> textureXform);
+#endif
+
+#if GR_TEST_UTILS
+ static uint32_t ClassID();
+#endif
+
+private:
+ class BatchSizeLimiter;
+};
+
+} // namespace skgpu::v1
+
+#endif // TextureOp_DEFINED