74 lines
3.2 KiB
C++
74 lines
3.2 KiB
C++
/*
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkSurfaceMetal_DEFINED
|
|
#define SkSurfaceMetal_DEFINED
|
|
|
|
#include "include/core/SkRefCnt.h"
|
|
#include "include/core/SkSurface.h"
|
|
#include "include/gpu/ganesh/GrTypes.h"
|
|
#include "include/gpu/ganesh/SkSurfaceGanesh.h"
|
|
#include "include/gpu/ganesh/mtl/GrMtlTypes.h"
|
|
|
|
namespace SkSurfaces {
|
|
/** Creates SkSurface from CAMetalLayer.
|
|
Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be
|
|
released when the SkSurface is destroyed.
|
|
|
|
Only available when Metal API is enabled.
|
|
|
|
Will grab the current drawable from the layer and use its texture as a backendRT to
|
|
create a renderable surface.
|
|
|
|
@param context GPU context
|
|
@param layer GrMTLHandle (expected to be a CAMetalLayer*)
|
|
@param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing
|
|
@param colorSpace range of colors; may be nullptr
|
|
@param surfaceProps LCD striping orientation and setting for device independent
|
|
fonts; may be nullptr
|
|
@param drawable Pointer to drawable to be filled in when this surface is
|
|
instantiated; may not be nullptr
|
|
@return created SkSurface, or nullptr
|
|
*/
|
|
SK_API sk_sp<SkSurface> WrapCAMetalLayer(GrRecordingContext* context,
|
|
GrMTLHandle layer,
|
|
GrSurfaceOrigin origin,
|
|
int sampleCnt,
|
|
SkColorType colorType,
|
|
sk_sp<SkColorSpace> colorSpace,
|
|
const SkSurfaceProps* surfaceProps,
|
|
GrMTLHandle* drawable) SK_API_AVAILABLE_CA_METAL_LAYER;
|
|
|
|
/** Creates SkSurface from MTKView.
|
|
Returned SkSurface takes a reference on the MTKView. The ref on the layer will be
|
|
released when the SkSurface is destroyed.
|
|
|
|
Only available when Metal API is enabled.
|
|
|
|
Will grab the current drawable from the layer and use its texture as a backendRT to
|
|
create a renderable surface.
|
|
|
|
@param context GPU context
|
|
@param layer GrMTLHandle (expected to be a MTKView*)
|
|
@param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing
|
|
@param colorSpace range of colors; may be nullptr
|
|
@param surfaceProps LCD striping orientation and setting for device independent
|
|
fonts; may be nullptr
|
|
@return created SkSurface, or nullptr
|
|
*/
|
|
SK_API sk_sp<SkSurface> WrapMTKView(GrRecordingContext* context,
|
|
GrMTLHandle mtkView,
|
|
GrSurfaceOrigin origin,
|
|
int sampleCnt,
|
|
SkColorType colorType,
|
|
sk_sp<SkColorSpace> colorSpace,
|
|
const SkSurfaceProps* surfaceProps)
|
|
SK_API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
|
|
} // namespace SkSurfaces
|
|
|
|
#endif
|