1 /*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #include "SkSurfaceCharacterization.h"
9
10 #if SK_SUPPORT_GPU
11 #include "GrCaps.h"
12 #include "GrContextThreadSafeProxyPriv.h"
13
operator ==(const SkSurfaceCharacterization & other) const14 bool SkSurfaceCharacterization::operator==(const SkSurfaceCharacterization& other) const {
15 if (!this->isValid() || !other.isValid()) {
16 return false;
17 }
18
19 if (fContextInfo != other.fContextInfo) {
20 return false;
21 }
22
23 return fCacheMaxResourceBytes == other.fCacheMaxResourceBytes &&
24 fOrigin == other.fOrigin &&
25 fImageInfo == other.fImageInfo &&
26 fConfig == other.fConfig &&
27 fFSAAType == other.fFSAAType &&
28 fStencilCnt == other.fStencilCnt &&
29 fIsTextureable == other.fIsTextureable &&
30 fIsMipMapped == other.fIsMipMapped &&
31 fUsesGLFBO0 == other.fUsesGLFBO0 &&
32 fVulkanSecondaryCBCompatible == other.fVulkanSecondaryCBCompatible &&
33 fSurfaceProps == other.fSurfaceProps;
34 }
35
createResized(int width,int height) const36 SkSurfaceCharacterization SkSurfaceCharacterization::createResized(int width, int height) const {
37 const GrCaps* caps = fContextInfo->priv().caps();
38 if (!caps) {
39 return SkSurfaceCharacterization();
40 }
41
42 if (width <= 0 || height <= 0 || width > caps->maxRenderTargetSize() ||
43 height > caps->maxRenderTargetSize()) {
44 return SkSurfaceCharacterization();
45 }
46
47 return SkSurfaceCharacterization(fContextInfo, fCacheMaxResourceBytes,
48 fImageInfo.makeWH(width, height), fOrigin, fConfig, fFSAAType,
49 fStencilCnt, fIsTextureable, fIsMipMapped, fUsesGLFBO0,
50 fVulkanSecondaryCBCompatible, fSurfaceProps);
51 }
52
53 #endif
54