blob: 6427a02c2b78b07e0560e452e0b6d49bcc8c09b1 [file] [log] [blame]
/*
* Copyright 2023 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/gpu/graphite/Image_Base_Graphite.h"
#include "include/core/SkColorSpace.h"
#include "src/gpu/graphite/Log.h"
#if defined(SK_GANESH)
#include "src/gpu/ganesh/GrFragmentProcessor.h"
#endif
namespace skgpu::graphite {
sk_sp<SkImage> Image_Base::onMakeSubset(const SkIRect&, GrDirectContext*) const {
SKGPU_LOG_W("Cannot convert Graphite-backed image to Ganesh");
return nullptr;
}
sk_sp<SkImage> Image_Base::onMakeColorTypeAndColorSpace(SkColorType,
sk_sp<SkColorSpace>,
GrDirectContext*) const {
SKGPU_LOG_W("Cannot convert Graphite-backed image to Ganesh");
return nullptr;
}
void Image_Base::onAsyncRescaleAndReadPixels(const SkImageInfo& info,
SkIRect srcRect,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode,
ReadPixelsCallback callback,
ReadPixelsContext context) const {
// TODO
callback(context, nullptr);
}
void Image_Base::onAsyncRescaleAndReadPixelsYUV420(SkYUVColorSpace yuvColorSpace,
sk_sp<SkColorSpace> dstColorSpace,
const SkIRect srcRect,
const SkISize dstSize,
RescaleGamma rescaleGamma,
RescaleMode rescaleMode,
ReadPixelsCallback callback,
ReadPixelsContext context) const {
// TODO
callback(context, nullptr);
}
#if defined(SK_GANESH)
std::unique_ptr<GrFragmentProcessor> Image_Base::onAsFragmentProcessor(
GrRecordingContext*,
SkSamplingOptions,
const SkTileMode[2],
const SkMatrix&,
const SkRect* subset,
const SkRect* domain) const {
return nullptr;
}
#endif
} // namespace skgpu::graphite
using namespace skgpu::graphite;
sk_sp<SkImage> SkImage::makeTextureImage(Recorder* recorder,
RequiredImageProperties requiredProps) const {
if (!recorder) {
return nullptr;
}
if (this->dimensions().area() <= 1) {
requiredProps.fMipmapped = skgpu::Mipmapped::kNo;
}
return as_IB(this)->onMakeTextureImage(recorder, requiredProps);
}
sk_sp<SkImage> SkImage::makeSubset(const SkIRect& subset,
skgpu::graphite::Recorder* recorder,
RequiredImageProperties requiredProps) const {
if (subset.isEmpty()) {
return nullptr;
}
const SkIRect bounds = SkIRect::MakeWH(this->width(), this->height());
if (!bounds.contains(subset)) {
return nullptr;
}
return as_IB(this)->onMakeSubset(subset, recorder, requiredProps);
}