blob: 731eb60d7c15f0ebed1007a35c9a681a9ce8cf4d [file]
/*
* Copyright 2025 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkGaneshRecorder_DEFINED
#define SkGaneshRecorder_DEFINED
#include "include/core/SkCPURecorder.h"
#include "include/core/SkRecorder.h"
#include "include/core/SkSurface.h"
#include "include/gpu/ganesh/GrRecordingContext.h"
#include "src/capture/SkCaptureManager.h"
class GrDirectContext;
class SkGaneshRecorder final : public SkRecorder {
public:
SkGaneshRecorder(GrRecordingContext* ctx) : fGaneshCtx(ctx) {}
Type type() const override { return SkRecorder::Type::kGanesh; }
GrRecordingContext* recordingContext() const { return fGaneshCtx; }
GrDirectContext* directContext() const { return GrAsDirectContext(fGaneshCtx); }
skcpu::Recorder* cpuRecorder() override {
return skcpu::Recorder::TODO();
}
private:
GrRecordingContext* fGaneshCtx;
SkCanvas* makeCaptureCanvas(SkCanvas*) override { return nullptr; }
void createCaptureBreakpoint(SkSurface*) override { }
};
inline SkGaneshRecorder* AsGaneshRecorder(SkRecorder* recorder) {
if (!recorder) {
return nullptr;
}
if (recorder->type() != SkRecorder::Type::kGanesh) {
return nullptr;
}
return static_cast<SkGaneshRecorder*>(recorder);
}
#endif