1 /* 2 * Copyright 2017 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 #ifndef GrMockCaps_DEFINED 9 #define GrMockCaps_DEFINED 10 11 #include "GrCaps.h" 12 #include "mock/GrMockTypes.h" 13 14 class GrMockCaps : public GrCaps { 15 public: 16 GrMockCaps(const GrContextOptions& contextOptions, const GrMockOptions& options) 17 : INHERITED(contextOptions), fOptions(options) { 18 fInstanceAttribSupport = options.fInstanceAttribSupport; 19 fMapBufferFlags = options.fMapBufferFlags; 20 fBufferMapThreshold = SK_MaxS32; // Overridable in GrContextOptions. 21 fMaxTextureSize = options.fMaxTextureSize; 22 fMaxRenderTargetSize = SkTMin(options.fMaxRenderTargetSize, fMaxTextureSize); 23 fMaxVertexAttributes = options.fMaxVertexAttributes; 24 25 fShaderCaps.reset(new GrShaderCaps(contextOptions)); 26 fShaderCaps->fGeometryShaderSupport = options.fGeometryShaderSupport; 27 fShaderCaps->fTexelBufferSupport = options.fTexelBufferSupport; 28 fShaderCaps->fIntegerSupport = options.fIntegerSupport; 29 fShaderCaps->fFlatInterpolationSupport = options.fFlatInterpolationSupport; 30 fShaderCaps->fMaxVertexSamplers = options.fMaxVertexSamplers; 31 fShaderCaps->fMaxFragmentSamplers = options.fMaxFragmentSamplers; 32 fShaderCaps->fShaderDerivativeSupport = options.fShaderDerivativeSupport; 33 34 this->applyOptionsOverrides(contextOptions); 35 } 36 int getSampleCount(int requestCount, GrPixelConfig /*config*/) const override { 37 return (requestCount > 0 && requestCount <= 16) ? GrNextPow2(requestCount) : 0; 38 } 39 bool isConfigTexturable(GrPixelConfig config) const override { 40 return fOptions.fConfigOptions[config].fTexturable; 41 } 42 bool isConfigRenderable(GrPixelConfig config, bool withMSAA) const override { 43 return fOptions.fConfigOptions[config].fRenderable[withMSAA]; 44 } 45 bool isConfigCopyable(GrPixelConfig config) const override { 46 return false; 47 } 48 49 bool initDescForDstCopy(const GrRenderTargetProxy* src, GrSurfaceDesc* desc, 50 bool* rectsMustMatch, bool* disallowSubrect) const override { 51 return false; 52 } 53 54 bool validateBackendTexture(const GrBackendTexture& tex, SkColorType, 55 GrPixelConfig*) const override { 56 return SkToBool(tex.getMockTextureInfo()); 57 } 58 59 bool validateBackendRenderTarget(const GrBackendRenderTarget& rt, SkColorType, 60 GrPixelConfig*) const override { 61 return false; 62 } 63 64 private: 65 GrMockOptions fOptions; 66 typedef GrCaps INHERITED; 67 }; 68 69 #endif 70