#include "src/gpu/ganesh/SurfaceContext.h"
#include "include/core/SkAlphaType.h"
#include "include/core/SkColorSpace.h"
#include "include/core/SkColorType.h"
#include "include/core/SkData.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkSamplingOptions.h"
#include "include/core/SkSurface.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/base/SingleOwner.h"
#include "include/private/base/SkAlign.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkPoint_impl.h"
#include "include/private/base/SkTemplates.h"
#include "include/private/base/SkTo.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/core/SkColorSpaceXformSteps.h"
#include "src/core/SkMipmap.h"
#include "src/core/SkTraceEvent.h"
#include "src/core/SkYUVMath.h"
#include "src/gpu/AsyncReadTypes.h"
#include "src/gpu/SkBackingFit.h"
#include "src/gpu/ganesh/GrAuditTrail.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrClientMappedBufferManager.h"
#include "src/gpu/ganesh/GrColorSpaceXform.h"
#include "src/gpu/ganesh/GrDataUtils.h"
#include "src/gpu/ganesh/GrDirectContextPriv.h"
#include "src/gpu/ganesh/GrDrawingManager.h"
#include "src/gpu/ganesh/GrFragmentProcessor.h"
#include "src/gpu/ganesh/GrGpu.h"
#include "src/gpu/ganesh/GrImageInfo.h"
#include "src/gpu/ganesh/GrProxyProvider.h"
#include "src/gpu/ganesh/GrRecordingContextPriv.h"
#include "src/gpu/ganesh/GrRenderTargetProxy.h"
#include "src/gpu/ganesh/GrRenderTask.h"
#include "src/gpu/ganesh/GrResourceProvider.h"
#include "src/gpu/ganesh/GrSurface.h"
#include "src/gpu/ganesh/GrTextureProxy.h"
#include "src/gpu/ganesh/GrTracing.h"
#include "src/gpu/ganesh/SurfaceFillContext.h"
#include "src/gpu/ganesh/effects/GrBicubicEffect.h"
#include "src/gpu/ganesh/effects/GrTextureEffect.h"
#include "src/gpu/ganesh/geometry/GrRect.h"
#include <algorithm>
#include <cstdint>
#include <memory>
#include <tuple>
usingnamespaceskia_private;
#define ASSERT_SINGLE_OWNER …
#define RETURN_FALSE_IF_ABANDONED …
#define RETURN_NULLPTR_IF_ABANDONED …
namespace skgpu::ganesh {
SurfaceContext::SurfaceContext(GrRecordingContext* context,
GrSurfaceProxyView readView,
const GrColorInfo& info)
: … { … }
const GrCaps* SurfaceContext::caps() const { … }
GrDrawingManager* SurfaceContext::drawingManager() { … }
const GrDrawingManager* SurfaceContext::drawingManager() const { … }
#ifdef SK_DEBUG
skgpu::SingleOwner* SurfaceContext::singleOwner() const { … }
#endif
static bool alpha_types_compatible(SkAlphaType srcAlphaType, SkAlphaType dstAlphaType) { … }
bool SurfaceContext::readPixels(GrDirectContext* dContext, GrPixmap dst, SkIPoint pt) { … }
bool SurfaceContext::writePixels(GrDirectContext* dContext,
GrCPixmap src,
SkIPoint dstPt) { … }
bool SurfaceContext::writePixels(GrDirectContext* dContext,
const GrCPixmap src[],
int numLevels) { … }
bool SurfaceContext::internalWritePixels(GrDirectContext* dContext,
const GrCPixmap src[],
int numLevels,
SkIPoint pt) { … }
void SurfaceContext::asyncRescaleAndReadPixels(GrDirectContext* dContext,
const SkImageInfo& info,
const SkIRect& srcRect,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode,
ReadPixelsCallback callback,
ReadPixelsContext callbackContext) { … }
void SurfaceContext::asyncReadPixels(GrDirectContext* dContext,
const SkIRect& rect,
SkColorType colorType,
ReadPixelsCallback callback,
ReadPixelsContext callbackContext) { … }
void SurfaceContext::asyncRescaleAndReadPixelsYUV420(GrDirectContext* dContext,
SkYUVColorSpace yuvColorSpace,
bool readAlpha,
sk_sp<SkColorSpace> dstColorSpace,
const SkIRect& srcRect,
SkISize dstSize,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode,
ReadPixelsCallback callback,
ReadPixelsContext callbackContext) { … }
sk_sp<GrRenderTask> SurfaceContext::copy(sk_sp<GrSurfaceProxy> src,
SkIRect srcRect,
SkIPoint dstPoint) { … }
sk_sp<GrRenderTask> SurfaceContext::copyScaled(sk_sp<GrSurfaceProxy> src,
SkIRect srcRect,
SkIRect dstRect,
GrSamplerState::Filter filter) { … }
std::unique_ptr<SurfaceFillContext> SurfaceContext::rescale(const GrImageInfo& info,
GrSurfaceOrigin origin,
SkIRect srcRect,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode) { … }
bool SurfaceContext::rescaleInto(SurfaceFillContext* dst,
SkIRect dstRect,
SkIRect srcRect,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode) { … }
SurfaceContext::PixelTransferResult SurfaceContext::transferPixels(GrColorType dstCT,
const SkIRect& rect) { … }
#ifdef SK_DEBUG
void SurfaceContext::validate() const { … }
#endif
}