Flutter Engine
The Flutter Engine
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
sk_gpu_test Namespace Reference

Namespaces

namespace  test_ops
 

Classes

class  ContextInfo
 
class  FenceSync
 
class  FlushFinishTracker
 
class  GLTestContext
 
class  GpuTimer
 
class  GrContextFactory
 
class  LazyYUVImage
 
class  MemoryCache
 
class  TestContext
 
class  VkTestMemoryAllocator
 

Typedefs

using Mipmapped = skgpu::Mipmapped
 
using Protected = skgpu::Protected
 
using Renderable = skgpu::Renderable
 
using PlatformFence = uint64_t
 
using PlatformTimerQuery = uint64_t
 

Enumerations

enum class  ANGLEBackend { kD3D9 , kD3D11 , kOpenGL , kMetal }
 
enum class  ANGLEContextVersion { kES2 , kES3 }
 

Functions

GLTestContextCreatePlatformGLTestContext (GrGLStandard forcedGpuAPI, GLTestContext *shareContext)
 
sk_sp< SkSurfaceMakeBackendTextureSurface (GrDirectContext *dContext, const SkImageInfo &ii, GrSurfaceOrigin origin, int sampleCnt, skgpu::Mipmapped mipmapped, GrProtected isProtected, const SkSurfaceProps *props)
 
sk_sp< SkSurfaceMakeBackendTextureSurface (GrDirectContext *dContext, SkISize dimensions, GrSurfaceOrigin origin, int sampleCnt, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, skgpu::Mipmapped mipmapped, GrProtected isProtected, const SkSurfaceProps *props)
 
sk_sp< SkSurfaceMakeBackendRenderTargetSurface (GrDirectContext *dContext, const SkImageInfo &ii, GrSurfaceOrigin origin, int sampleCnt, GrProtected isProtected, const SkSurfaceProps *props)
 
sk_sp< SkSurfaceMakeBackendRenderTargetSurface (GrDirectContext *dContext, SkISize dimensions, GrSurfaceOrigin origin, int sampleCnt, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, GrProtected isProtected, const SkSurfaceProps *props)
 
sk_sp< const GrGLInterfaceCreateANGLEGLInterface ()
 
std::unique_ptr< GLTestContextMakeANGLETestContext (ANGLEBackend type, ANGLEContextVersion version, GLTestContext *shareContext, void *display)
 
static bool fence_is_supported (const GLTestContext *ctx)
 
TestContextCreateMockTestContext (TestContext *)
 
MtlTestContext * CreatePlatformMtlTestContext (MtlTestContext *sharedContext)
 
GrTextureProxyGetTextureImageProxy (SkImage *image, GrRecordingContext *rContext)
 
GrSurfaceProxyView MakeTextureProxyViewFromData (GrDirectContext *dContext, GrRenderable renderable, GrSurfaceOrigin origin, GrCPixmap pixmap)
 
std::tuple< std::array< sk_sp< SkImage >, SkYUVAInfo::kMaxPlanes >, SkYUVAInfoMakeYUVAPlanesAsA8 (SkImage *src, SkYUVColorSpace cs, SkYUVAInfo::Subsampling ss, GrRecordingContext *rContext)
 

Variables

static constexpr PlatformFence kInvalidFence = 0
 
static constexpr PlatformTimerQuery kInvalidTimerQuery = 0
 

Typedef Documentation

◆ Mipmapped

Definition at line 32 of file BackendTextureImageFactory.h.

◆ PlatformFence

using sk_gpu_test::PlatformFence = typedef uint64_t

Definition at line 15 of file FenceSync.h.

◆ PlatformTimerQuery

using sk_gpu_test::PlatformTimerQuery = typedef uint64_t

Definition at line 17 of file GpuTimer.h.

◆ Protected

Definition at line 33 of file BackendTextureImageFactory.h.

◆ Renderable

Definition at line 34 of file BackendTextureImageFactory.h.

Enumeration Type Documentation

◆ ANGLEBackend

enum class sk_gpu_test::ANGLEBackend
strong
Enumerator
kD3D9 
kD3D11 
kOpenGL 
kMetal 

Definition at line 21 of file GLTestContext_angle.h.

21 {
22 kD3D9,
23 kD3D11,
24 kOpenGL,
25 kMetal
26};
@ kOpenGL
Definition: embedder.h:80
@ kMetal
Definition: embedder.h:85

◆ ANGLEContextVersion

Enumerator
kES2 
kES3 

Definition at line 28 of file GLTestContext_angle.h.

28 {
29 kES2,
30 kES3
31};

Function Documentation

◆ CreateANGLEGLInterface()

sk_sp< const GrGLInterface > sk_gpu_test::CreateANGLEGLInterface ( )

Creates a GrGLInterface for the current ANGLE GLES Context. Here current means bound in ANGLE's implementation of EGL.

Definition at line 502 of file GLTestContext_angle.cpp.

502 {
503 static Libs gLibs = { nullptr, nullptr };
504
505 if (nullptr == gLibs.fGLLib) {
506 // We load the ANGLE library and never let it go
507#if defined(SK_BUILD_FOR_WIN)
508 gLibs.fGLLib = SkLoadDynamicLibrary("libGLESv2.dll");
509 gLibs.fEGLLib = SkLoadDynamicLibrary("libEGL.dll");
510#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
511 gLibs.fGLLib = SkLoadDynamicLibrary("libGLESv2.dylib");
512 gLibs.fEGLLib = SkLoadDynamicLibrary("libEGL.dylib");
513#else
514 gLibs.fGLLib = SkLoadDynamicLibrary("libGLESv2.so");
515 gLibs.fEGLLib = SkLoadDynamicLibrary("libEGL.so");
516#endif
517 }
518
519 if (nullptr == gLibs.fGLLib || nullptr == gLibs.fEGLLib) {
520 // We can't setup the interface correctly w/o the so
521 return nullptr;
522 }
523
524 return GrGLMakeAssembledGLESInterface(&gLibs, angle_get_gl_proc);
525}
SK_API sk_sp< const GrGLInterface > GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get)
void * SkLoadDynamicLibrary(const char *libraryName)

◆ CreateMockTestContext()

TestContext * sk_gpu_test::CreateMockTestContext ( TestContext shareContext = nullptr)

Creates mock context object for use with GrContexts created with GrBackendApi::kMock. It will trivially succeed at everything.

Definition at line 44 of file MockTestContext.cpp.

44{ return new MockTestContext(); }

◆ CreatePlatformGLTestContext()

GLTestContext * sk_gpu_test::CreatePlatformGLTestContext ( GrGLStandard  forcedGpuAPI,
GLTestContext shareContext = nullptr 
)

Creates platform-dependent GL context object. The shareContext parameter is in an optional context with which to share display lists. This should be a pointer to an GLTestContext created with SkCreatePlatformGLTestContext. NULL indicates that no sharing is to take place. Returns a valid gl context object or NULL if such can not be created.

Definition at line 340 of file gm_bindings.cpp.

341 {
342 return new WasmWebGlTestContext();
343}

◆ CreatePlatformMtlTestContext()

MtlTestContext * sk_gpu_test::CreatePlatformMtlTestContext ( MtlTestContext *  sharedContext)

Definition at line 79 of file MtlTestContext.mm.

79 {
80 return MtlTestContextImpl::Create(sharedContext);
81}
static sk_sp< Effect > Create()
Definition: RefCntTest.cpp:117

◆ fence_is_supported()

static bool sk_gpu_test::fence_is_supported ( const GLTestContext ctx)
static

Definition at line 163 of file GLTestContext.cpp.

163 {
164 if (kGL_GrGLStandard == ctx->gl()->fStandard) {
165 if (GrGLGetVersion(ctx->gl()) < GR_GL_VER(3, 2) &&
166 !ctx->gl()->hasExtension("GL_ARB_sync")) {
167 return false;
168 }
169 return true;
170 } else {
171 if (ctx->gl()->hasExtension("GL_APPLE_sync")) {
172 return true;
173 } else if (ctx->gl()->hasExtension("GL_NV_fence")) {
174 return true;
175 } else if (GrGLGetVersion(ctx->gl()) >= GR_GL_VER(3, 0)) {
176 return true;
177 } else {
178 return false;
179 }
180 }
181}
@ kGL_GrGLStandard
Definition: GrGLTypes.h:21
GrGLVersion GrGLGetVersion(const GrGLInterface *gl)
Definition: GrGLUtil.cpp:109
#define GR_GL_VER(major, minor)
Definition: GrGLUtil.h:26
const GrGLInterface * gl() const
Definition: GLTestContext.h:30
bool hasExtension(const char ext[]) const
Definition: GrGLInterface.h:84
GrGLStandard fStandard
Definition: GrGLInterface.h:81

◆ GetTextureImageProxy()

GrTextureProxy * sk_gpu_test::GetTextureImageProxy ( SkImage ,
GrRecordingContext  
)

Returns the proxy backing an image if it is texture backed, otherwise nullptr.

Definition at line 32 of file ProxyUtils.cpp.

32 {
33 if (!as_IB(image)->isGaneshBacked() || as_IB(image)->isYUVA()) {
34 return nullptr;
35 }
36 if (!rContext) {
37 // If the image is backed by a recording context we'll use that.
38 GrImageContext* iContext = as_IB(image)->context();
39 SkASSERT(iContext);
40 rContext = iContext->priv().asRecordingContext();
41 if (!rContext) {
42 return nullptr;
43 }
44 }
45 auto [view, ct] = skgpu::ganesh::AsView(rContext, image, skgpu::Mipmapped::kNo);
46 if (!view) {
47 // With the above checks we expect this to succeed unless there is a context mismatch.
48 SkASSERT(!image->isValid(rContext));
49 return nullptr;
50 }
51 GrSurfaceProxy* proxy = view.proxy();
52 SkASSERT(proxy->asTextureProxy());
53 return proxy->asTextureProxy();
54}
#define SkASSERT(cond)
Definition: SkAssert.h:116
static SkImage_Base * as_IB(SkImage *image)
Definition: SkImage_Base.h:201
GrRecordingContext * asRecordingContext()
GrImageContextPriv priv()
virtual GrTextureProxy * asTextureProxy()
virtual GrImageContext * context() const
Definition: SkImage_Base.h:112
virtual bool isValid(GrRecordingContext *context) const =0
sk_sp< const SkImage > image
Definition: SkRecords.h:269
std::tuple< GrSurfaceProxyView, GrColorType > AsView(GrRecordingContext *rContext, const SkImage *img, skgpu::Mipmapped mipmapped, GrImageTexGenPolicy policy)

◆ MakeANGLETestContext()

std::unique_ptr< GLTestContext > sk_gpu_test::MakeANGLETestContext ( ANGLEBackend  ,
ANGLEContextVersion  ,
GLTestContext shareContext = nullptr,
void *  display = nullptr 
)

Creates a GLTestContext backed by ANGLE.

Definition at line 527 of file GLTestContext_angle.cpp.

528 {
529#if defined(SK_BUILD_FOR_WIN) && defined(_M_ARM64)
530 // Windows-on-ARM only has D3D11. This will fail correctly, but it produces huge amounts of
531 // debug output for every unit test from both ANGLE and our context factory.
532 if (ANGLEBackend::kD3D11 != type) {
533 return nullptr;
534 }
535#endif
536
537 // These checks squelch spam when display creation predictably fails
538#if defined(SK_BUILD_FOR_WIN)
539 if (ANGLEBackend::kMetal == type) {
540 return nullptr;
541 }
542#endif
543
544#if defined(SK_BUILD_FOR_MAC)
545 if (ANGLEBackend::kMetal != type) {
546 return nullptr;
547 }
548#endif
549
550 ANGLEGLContext* angleShareContext = reinterpret_cast<ANGLEGLContext*>(shareContext);
551 std::unique_ptr<GLTestContext> ctx(new ANGLEGLContext(type, version,
552 angleShareContext, display));
553 if (!ctx->isValid()) {
554 return nullptr;
555 }
556 return ctx;
557}
GLenum type

◆ MakeBackendRenderTargetSurface() [1/2]

sk_sp< SkSurface > sk_gpu_test::MakeBackendRenderTargetSurface ( GrDirectContext ,
const SkImageInfo ,
GrSurfaceOrigin  ,
int  sampleCnt,
GrProtected  = GrProtected::kNo,
const SkSurfaceProps = nullptr 
)

Creates an SkSurface backed by a non-textureable render target.

Definition at line 70 of file BackendSurfaceFactory.cpp.

75 {
77 return nullptr;
78 }
79 auto ct = SkColorTypeToGrColorType(ii.colorType());
80
81 struct ReleaseContext {
83 GrBackendRenderTarget fRenderTarget;
84 };
85
86 auto bert = dContext->priv().getGpu()->createTestingOnlyBackendRenderTarget(
87 ii.dimensions(), ct, sampleCnt, isProtected);
88 auto rc = new ReleaseContext{sk_ref_sp(dContext), bert};
89 SkASSERT(!bert.isValid() || bert.sampleCnt() >= sampleCnt);
90
91 auto proc = [](void* c) {
92 const auto* rc = static_cast<ReleaseContext*>(c);
93 if (auto gpu = rc->fContext->priv().getGpu(); gpu && rc->fRenderTarget.isValid()) {
94 gpu->deleteTestingOnlyBackendRenderTarget(rc->fRenderTarget);
95 }
96 delete rc;
97 };
98
100 dContext, bert, origin, ii.colorType(), ii.refColorSpace(), props, proc, rc);
101}
static constexpr GrColorType SkColorTypeToGrColorType(SkColorType ct)
Definition: GrTypesPriv.h:629
kUnpremul_SkAlphaType
@ kUnknown_SkAlphaType
uninitialized
Definition: SkAlphaType.h:27
sk_sp< T > sk_ref_sp(T *obj)
Definition: SkRefCnt.h:381
const Context & fContext
GrDirectContextPriv priv()
SK_API sk_sp< SkSurface > WrapBackendRenderTarget(GrRecordingContext *context, const GrBackendRenderTarget &backendRenderTarget, GrSurfaceOrigin origin, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, const SkSurfaceProps *surfaceProps, RenderTargetReleaseProc releaseProc=nullptr, ReleaseContext releaseContext=nullptr)
void * ReleaseContext
sk_sp< SkColorSpace > refColorSpace() const
SkISize dimensions() const
Definition: SkImageInfo.h:421
SkAlphaType alphaType() const
Definition: SkImageInfo.h:375
SkColorType colorType() const
Definition: SkImageInfo.h:373

◆ MakeBackendRenderTargetSurface() [2/2]

sk_sp< SkSurface > sk_gpu_test::MakeBackendRenderTargetSurface ( GrDirectContext dContext,
SkISize  dimensions,
GrSurfaceOrigin  origin,
int  sampleCnt,
SkColorType  colorType,
sk_sp< SkColorSpace colorSpace,
GrProtected  isProtected,
const SkSurfaceProps props 
)

Definition at line 103 of file BackendSurfaceFactory.cpp.

110 {
111 auto ii = SkImageInfo::Make(dimensions, colorType, kPremul_SkAlphaType, std::move(colorSpace));
112 return MakeBackendRenderTargetSurface(dContext, ii, origin, sampleCnt, isProtected, props);
113}
@ kPremul_SkAlphaType
pixel components are premultiplied by alpha
Definition: SkAlphaType.h:29
static SkColorType colorType(AImageDecoder *decoder, const AImageDecoderHeaderInfo *headerInfo)
sk_sp< SkSurface > MakeBackendRenderTargetSurface(GrDirectContext *dContext, SkISize dimensions, GrSurfaceOrigin origin, int sampleCnt, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, GrProtected isProtected, const SkSurfaceProps *props)
static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at)

◆ MakeBackendTextureSurface() [1/2]

sk_sp< SkSurface > sk_gpu_test::MakeBackendTextureSurface ( GrDirectContext dContext,
const SkImageInfo ii,
GrSurfaceOrigin  origin,
int  sampleCnt,
skgpu::Mipmapped  mipmapped,
GrProtected  isProtected,
const SkSurfaceProps props 
)

Definition at line 26 of file BackendSurfaceFactory.cpp.

32 {
33 if (ii.alphaType() == kUnpremul_SkAlphaType) {
34 return nullptr;
35 }
36 auto mbet = ManagedBackendTexture::MakeWithoutData(dContext,
37 ii.width(),
38 ii.height(),
39 ii.colorType(),
40 mipmapped,
42 isProtected);
43 if (!mbet) {
44 return nullptr;
45 }
46 return SkSurfaces::WrapBackendTexture(dContext,
47 mbet->texture(),
48 origin,
49 sampleCnt,
50 ii.colorType(),
51 ii.refColorSpace(),
52 props,
53 ManagedBackendTexture::ReleaseProc,
54 mbet->releaseContext());
55}
SK_API sk_sp< SkSurface > WrapBackendTexture(GrRecordingContext *context, const GrBackendTexture &backendTexture, GrSurfaceOrigin origin, int sampleCnt, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, const SkSurfaceProps *surfaceProps, TextureReleaseProc textureReleaseProc=nullptr, ReleaseContext releaseContext=nullptr)
int width() const
Definition: SkImageInfo.h:365
int height() const
Definition: SkImageInfo.h:371

◆ MakeBackendTextureSurface() [2/2]

sk_sp< SkSurface > sk_gpu_test::MakeBackendTextureSurface ( GrDirectContext dContext,
SkISize  dimensions,
GrSurfaceOrigin  origin,
int  sampleCnt,
SkColorType  colorType,
sk_sp< SkColorSpace colorSpace,
skgpu::Mipmapped  mipmapped,
GrProtected  isProtected,
const SkSurfaceProps props 
)

Definition at line 57 of file BackendSurfaceFactory.cpp.

65 {
66 auto ii = SkImageInfo::Make(dimensions, colorType, kPremul_SkAlphaType, std::move(colorSpace));
68 dContext, ii, origin, sampleCnt, mipmapped, isProtected, props);
69}
sk_sp< SkSurface > MakeBackendTextureSurface(GrDirectContext *dContext, SkISize dimensions, GrSurfaceOrigin origin, int sampleCnt, SkColorType colorType, sk_sp< SkColorSpace > colorSpace, skgpu::Mipmapped mipmapped, GrProtected isProtected, const SkSurfaceProps *props)

◆ MakeTextureProxyViewFromData()

GrSurfaceProxyView sk_gpu_test::MakeTextureProxyViewFromData ( GrDirectContext ,
GrRenderable  ,
GrSurfaceOrigin  ,
GrCPixmap  pixmap 
)

Makes a texture proxy containing the passed in color data.

Definition at line 56 of file ProxyUtils.cpp.

59 {
60 if (dContext->abandoned()) {
61 return {};
62 }
63
64 const GrCaps* caps = dContext->priv().caps();
65
66 const GrBackendFormat format = caps->getDefaultBackendFormat(pixmap.colorType(), renderable);
67 if (!format.isValid()) {
68 return {};
69 }
70 skgpu::Swizzle swizzle = caps->getReadSwizzle(format, pixmap.colorType());
71
73 proxy = dContext->priv().proxyProvider()->createProxy(format,
74 pixmap.dimensions(),
75 renderable,
76 /*sample count*/ 1,
81 /*label=*/"TextureProxyViewFromData");
82 if (!proxy) {
83 return {};
84 }
85 GrSurfaceProxyView view(proxy, origin, swizzle);
86 auto sContext = dContext->priv().makeSC(std::move(view), pixmap.colorInfo());
87 if (!sContext) {
88 return {};
89 }
90 if (!sContext->writePixels(dContext, pixmap, {0, 0})) {
91 return {};
92 }
93 return sContext->readSurfaceView();
94}
const GrCaps * caps() const
Definition: GrCaps.h:57
GrBackendFormat getDefaultBackendFormat(GrColorType, GrRenderable) const
Definition: GrCaps.cpp:400
skgpu::Swizzle getReadSwizzle(const GrBackendFormat &format, GrColorType colorType) const
Definition: GrCaps.cpp:443
bool abandoned() override
const GrColorInfo & colorInfo() const
Definition: GrPixmap.h:18
SkISize dimensions() const
Definition: GrPixmap.h:29
GrColorType colorType() const
Definition: GrPixmap.h:30
sk_sp< GrTextureProxy > createProxy(const GrBackendFormat &, SkISize dimensions, GrRenderable, int renderTargetSampleCnt, skgpu::Mipmapped, SkBackingFit, skgpu::Budgeted, GrProtected, std::string_view label, GrInternalSurfaceFlags=GrInternalSurfaceFlags::kNone, UseAllocator useAllocator=UseAllocator::kYes)
GrProxyProvider * proxyProvider()
std::unique_ptr< skgpu::ganesh::SurfaceContext > makeSC(GrSurfaceProxyView readView, const GrColorInfo &)
uint32_t uint32_t * format

◆ MakeYUVAPlanesAsA8()

std::tuple< std::array< sk_sp< SkImage >, SkYUVAInfo::kMaxPlanes >, SkYUVAInfo > sk_gpu_test::MakeYUVAPlanesAsA8 ( SkImage src,
SkYUVColorSpace  cs,
SkYUVAInfo::Subsampling  ss,
GrRecordingContext rContext 
)

Definition at line 152 of file YUVUtils.cpp.

155 {
156 float rgbToYUV[20];
157 SkColorMatrix_RGB2YUV(cs, rgbToYUV);
158
162 int n = SkYUVAInfo::PlaneDimensions(src->dimensions(),
163 config,
164 ss,
166 dims);
167 std::array<sk_sp<SkImage>, 4> planes;
168 for (int i = 0; i < n; ++i) {
170 sk_sp<SkSurface> surf;
171 if (rContext) {
172 surf = SkSurfaces::RenderTarget(rContext, skgpu::Budgeted::kYes, info, 1, nullptr);
173 } else {
174 surf = SkSurfaces::Raster(info);
175 }
176 if (!surf) {
177 return {};
178 }
179
181 paint.setBlendMode(SkBlendMode::kSrc);
182
183 // Make a matrix with the ith row of rgbToYUV copied to the A row since we're drawing to A8.
184 float m[20] = {};
185 std::copy_n(rgbToYUV + 5*i, 5, m + 15);
186 paint.setColorFilter(SkColorFilters::Matrix(m));
187 surf->getCanvas()->drawImageRect(src,
188 SkRect::Make(dims[i]),
190 &paint);
191 planes[i] = surf->makeImageSnapshot();
192 if (!planes[i]) {
193 return {};
194 }
195 }
196 SkYUVAInfo info(src->dimensions(), config, ss, cs);
197 return {planes, info};
198}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition: DM.cpp:213
@ kTopLeft_SkEncodedOrigin
void SkColorMatrix_RGB2YUV(SkYUVColorSpace cs, float m[20])
Definition: SkYUVMath.cpp:389
void drawImageRect(const SkImage *, const SkRect &src, const SkRect &dst, const SkSamplingOptions &, const SkPaint *, SrcRectConstraint)
Definition: SkCanvas.cpp:2333
static sk_sp< SkColorFilter > Matrix(const SkColorMatrix &)
SkCanvas * getCanvas()
Definition: SkSurface.cpp:82
sk_sp< SkImage > makeImageSnapshot()
Definition: SkSurface.cpp:90
@ kY_U_V_A
Plane 0: Y, Plane 1: U, Plane 2: V, Plane 3: A.
@ kY_U_V
Plane 0: Y, Plane 1: U, Plane 2: V.
static constexpr int kMaxPlanes
Definition: SkYUVAInfo.h:98
static int PlaneDimensions(SkISize imageDimensions, PlaneConfig, Subsampling, SkEncodedOrigin, SkISize planeDimensions[kMaxPlanes])
Definition: SkYUVAInfo.cpp:77
const Paint & paint
Definition: color_source.cc:38
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
SK_API sk_sp< SkSurface > RenderTarget(GrRecordingContext *context, skgpu::Budgeted budgeted, const SkImageInfo &imageInfo, int sampleCount, GrSurfaceOrigin surfaceOrigin, const SkSurfaceProps *surfaceProps, bool shouldCreateWithMips=false, bool isProtected=false)
SkSamplingOptions(SkFilterMode::kLinear))
Definition: SkSize.h:16
static SkImageInfo MakeA8(int width, int height)
static SkRect Make(const SkISize &size)
Definition: SkRect.h:669

Variable Documentation

◆ kInvalidFence

constexpr PlatformFence sk_gpu_test::kInvalidFence = 0
staticconstexpr

Definition at line 16 of file FenceSync.h.

◆ kInvalidTimerQuery

constexpr PlatformTimerQuery sk_gpu_test::kInvalidTimerQuery = 0
staticconstexpr

Definition at line 18 of file GpuTimer.h.