chromium/third_party/skia/src/gpu/ganesh/ops/SoftwarePathRenderer.cpp

/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "src/gpu/ganesh/ops/SoftwarePathRenderer.h"

#include "include/core/SkAlphaType.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkSamplingOptions.h"
#include "include/core/SkScalar.h"
#include "include/core/SkSize.h"
#include "include/core/SkStrokeRec.h"
#include "include/gpu/GpuTypes.h"
#include "include/gpu/ganesh/GrBackendSurface.h"
#include "include/gpu/ganesh/GrDirectContext.h"
#include "include/gpu/ganesh/GrRecordingContext.h"
#include "include/gpu/ganesh/GrTypes.h"
#include "include/private/SkIDChangeListener.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkFixed.h"
#include "include/private/base/SkMath.h"
#include "include/private/base/SkPoint_impl.h"
#include "include/private/base/SkTo.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/base/SkFloatBits.h"
#include "src/core/SkTaskGroup.h"
#include "src/core/SkTraceEvent.h"
#include "src/gpu/ResourceKey.h"
#include "src/gpu/SkBackingFit.h"
#include "src/gpu/Swizzle.h"
#include "src/gpu/ganesh/GrAuditTrail.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrClip.h"
#include "src/gpu/ganesh/GrDeferredProxyUploader.h"
#include "src/gpu/ganesh/GrDirectContextPriv.h"
#include "src/gpu/ganesh/GrPaint.h"
#include "src/gpu/ganesh/GrProxyProvider.h"
#include "src/gpu/ganesh/GrRecordingContextPriv.h"
#include "src/gpu/ganesh/GrSWMaskHelper.h"
#include "src/gpu/ganesh/GrSamplerState.h"
#include "src/gpu/ganesh/GrStyle.h"
#include "src/gpu/ganesh/GrSurfaceProxy.h"
#include "src/gpu/ganesh/GrSurfaceProxyView.h"
#include "src/gpu/ganesh/GrTextureProxy.h"
#include "src/gpu/ganesh/GrTextureProxyPriv.h"
#include "src/gpu/ganesh/GrUtil.h"
#include "src/gpu/ganesh/SkGr.h"
#include "src/gpu/ganesh/SurfaceDrawContext.h"
#include "src/gpu/ganesh/effects/GrTextureEffect.h"
#include "src/gpu/ganesh/geometry/GrStyledShape.h"

#include <cstdint>
#include <functional>
#include <memory>
#include <utility>

struct GrUserStencilSettings;

namespace {

/**
 * Payload class for use with GrTDeferredProxyUploader. The software path renderer only draws
 * a single path into the mask texture. This stores all of the information needed by the worker
 * thread's call to drawShape (see below, in onDrawPath).
 */
class SoftwarePathData {};

bool get_unclipped_shape_dev_bounds(const GrStyledShape& shape, const SkMatrix& matrix,
                                    SkIRect* devBounds) {}

GrSurfaceProxyView make_deferred_mask_texture_view(GrRecordingContext* rContext,
                                                   SkBackingFit fit,
                                                   SkISize dimensions) {}


} // anonymous namespace

namespace skgpu::ganesh {

////////////////////////////////////////////////////////////////////////////////
PathRenderer::CanDrawPath SoftwarePathRenderer::onCanDrawPath(const CanDrawPathArgs& args) const {}

////////////////////////////////////////////////////////////////////////////////

// Gets the shape bounds, the clip bounds, and the intersection (if any). Returns false if there
// is no intersection.
bool SoftwarePathRenderer::GetShapeAndClipBounds(SurfaceDrawContext* sdc,
                                                 const GrClip* clip,
                                                 const GrStyledShape& shape,
                                                 const SkMatrix& matrix,
                                                 SkIRect* unclippedDevShapeBounds,
                                                 SkIRect* clippedDevShapeBounds,
                                                 SkIRect* devClipBounds) {}

////////////////////////////////////////////////////////////////////////////////

void SoftwarePathRenderer::DrawNonAARect(SurfaceDrawContext* sdc,
                                         GrPaint&& paint,
                                         const GrUserStencilSettings& userStencilSettings,
                                         const GrClip* clip,
                                         const SkMatrix& viewMatrix,
                                         const SkRect& rect,
                                         const SkMatrix& localMatrix) {}

void SoftwarePathRenderer::DrawAroundInvPath(SurfaceDrawContext* sdc,
                                             GrPaint&& paint,
                                             const GrUserStencilSettings& userStencilSettings,
                                             const GrClip* clip,
                                             const SkMatrix& viewMatrix,
                                             const SkIRect& devClipBounds,
                                             const SkIRect& devPathBounds) {}

void SoftwarePathRenderer::DrawToTargetWithShapeMask(
        GrSurfaceProxyView view,
        SurfaceDrawContext* sdc,
        GrPaint&& paint,
        const GrUserStencilSettings& userStencilSettings,
        const GrClip* clip,
        const SkMatrix& viewMatrix,
        const SkIPoint& textureOriginInDeviceSpace,
        const SkIRect& deviceSpaceRectToDraw) {}

////////////////////////////////////////////////////////////////////////////////
// return true on success; false on failure
bool SoftwarePathRenderer::onDrawPath(const DrawPathArgs& args) {}

}  // namespace skgpu::ganesh