aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ops/GrTextureOp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/ops/GrTextureOp.cpp')
-rw-r--r--src/gpu/ops/GrTextureOp.cpp38
1 files changed, 26 insertions, 12 deletions
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 68a5851afe..2301930e93 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -8,8 +8,11 @@
#include "GrTextureOp.h"
#include "GrAppliedClip.h"
#include "GrCaps.h"
+#include "GrContext.h"
+#include "GrContextPriv.h"
#include "GrDrawOpTest.h"
#include "GrGeometryProcessor.h"
+#include "GrMemoryPool.h"
#include "GrMeshDrawOp.h"
#include "GrOpFlushState.h"
#include "GrQuad.h"
@@ -608,10 +611,14 @@ static void tessellate_quad(const GrPerspQuad& devQuad, const SkRect& srcRect, G
*/
class TextureOp final : public GrMeshDrawOp {
public:
- static std::unique_ptr<GrDrawOp> Make(sk_sp<GrTextureProxy> proxy,
- GrSamplerState::Filter filter, GrColor color,
- const SkRect& srcRect, const SkRect& dstRect,
- GrAAType aaType, SkCanvas::SrcRectConstraint constraint,
+ static std::unique_ptr<GrDrawOp> Make(GrContext* context,
+ sk_sp<GrTextureProxy> proxy,
+ GrSamplerState::Filter filter,
+ GrColor color,
+ const SkRect& srcRect,
+ const SkRect& dstRect,
+ GrAAType aaType,
+ SkCanvas::SrcRectConstraint constraint,
const SkMatrix& viewMatrix,
sk_sp<GrColorSpaceXform> csxf) {
return std::unique_ptr<GrDrawOp>(new TextureOp(std::move(proxy), filter, color, srcRect,
@@ -684,6 +691,7 @@ public:
DEFINE_OP_CLASS_ID
private:
+ friend class ::GrOpMemoryPool;
// This is used in a heursitic for choosing a code path. We don't care what happens with
// really large rects, infs, nans, etc.
@@ -1026,12 +1034,18 @@ constexpr int TextureOp::kMaxTextures;
namespace GrTextureOp {
-std::unique_ptr<GrDrawOp> Make(sk_sp<GrTextureProxy> proxy, GrSamplerState::Filter filter,
- GrColor color, const SkRect& srcRect, const SkRect& dstRect,
- GrAAType aaType, SkCanvas::SrcRectConstraint constraint,
- const SkMatrix& viewMatrix, sk_sp<GrColorSpaceXform> csxf) {
- return TextureOp::Make(std::move(proxy), filter, color, srcRect, dstRect, aaType, constraint,
- viewMatrix, std::move(csxf));
+std::unique_ptr<GrDrawOp> Make(GrContext* context,
+ sk_sp<GrTextureProxy> proxy,
+ GrSamplerState::Filter filter,
+ GrColor color,
+ const SkRect& srcRect,
+ const SkRect& dstRect,
+ GrAAType aaType,
+ SkCanvas::SrcRectConstraint constraint,
+ const SkMatrix& viewMatrix,
+ sk_sp<GrColorSpaceXform> csxf) {
+ return TextureOp::Make(context, std::move(proxy), filter, color, srcRect, dstRect, aaType,
+ constraint, viewMatrix, std::move(csxf));
}
} // namespace GrTextureOp
@@ -1079,8 +1093,8 @@ GR_DRAW_OP_TEST_DEFINE(TextureOp) {
}
auto constraint = random->nextBool() ? SkCanvas::kStrict_SrcRectConstraint
: SkCanvas::kFast_SrcRectConstraint;
- return GrTextureOp::Make(std::move(proxy), filter, color, srcRect, rect, aaType, constraint,
- viewMatrix, std::move(csxf));
+ return GrTextureOp::Make(context, std::move(proxy), filter, color, srcRect, rect, aaType,
+ constraint, viewMatrix, std::move(csxf));
}
#endif