blob: 3f51e7cd9b6578c8bff77587fee062076b9ba21e [file]
/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef skgpu_graphite_MtlBackendContext_DEFINED
#define skgpu_graphite_MtlBackendContext_DEFINED
#include "include/gpu/graphite/Context.h"
#include "include/ports/SkCFObject.h"
#include "include/private/SkAPI.h"
#import <CoreFoundation/CoreFoundation.h>
#include <memory>
class SkContext;
struct SkContextOptions;
namespace skgpu::graphite {
// The MtlBackendContext contains all of the base Metal objects needed by the graphite Metal
// backend. The client will create this object and pass it into the Context::MakeMetal factory call
// when setting up Skia.
struct SK_API MtlBackendContext {
sk_cfp<CFTypeRef> fDevice;
sk_cfp<CFTypeRef> fQueue;
};
namespace ContextFactory {
SK_API std::unique_ptr<Context> MakeMetal(const MtlBackendContext&, const ContextOptions&);
} // namespace ContextFactory
} // namespace skgpu::graphite
namespace SkContexts {
// Creates a context wrapping a Graphite GPU backend using Metal
std::unique_ptr<SkContext> MakeGraphite(const skgpu::graphite::MtlBackendContext& mtlContext,
const SkContextOptions& options);
} // namespace SkContexts
#endif // skgpu_graphite_MtlBackendContext_DEFINED