blob: 9f279689c77bd7879f0ae1d77107678fcaef9b2f [file] [log] [blame]
Brian Salomoncfe910d2017-07-06 16:40:18 -04001/*
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"
Brian Salomon8fe24272017-07-07 12:56:11 -040012#include "mock/GrMockTypes.h"
Brian Salomoncfe910d2017-07-06 16:40:18 -040013
14class GrMockCaps : public GrCaps {
15public:
16 GrMockCaps(const GrContextOptions& contextOptions, const GrMockOptions& options)
17 : INHERITED(contextOptions), fOptions(options) {
Chris Daltonfddb6c02017-11-04 15:22:22 -060018 fInstanceAttribSupport = options.fInstanceAttribSupport;
19 fMapBufferFlags = options.fMapBufferFlags;
20 fBufferMapThreshold = SK_MaxS32; // Overridable in GrContextOptions.
Brian Salomoncfe910d2017-07-06 16:40:18 -040021 fMaxTextureSize = options.fMaxTextureSize;
22 fMaxRenderTargetSize = SkTMin(options.fMaxRenderTargetSize, fMaxTextureSize);
23 fMaxVertexAttributes = options.fMaxVertexAttributes;
Chris Daltonfddb6c02017-11-04 15:22:22 -060024
Brian Salomoncfe910d2017-07-06 16:40:18 -040025 fShaderCaps.reset(new GrShaderCaps(contextOptions));
Chris Daltonfddb6c02017-11-04 15:22:22 -060026 fShaderCaps->fGeometryShaderSupport = options.fGeometryShaderSupport;
27 fShaderCaps->fTexelBufferSupport = options.fTexelBufferSupport;
28 fShaderCaps->fIntegerSupport = options.fIntegerSupport;
29 fShaderCaps->fFlatInterpolationSupport = options.fFlatInterpolationSupport;
30 fShaderCaps->fMaxVertexSamplers = options.fMaxVertexSamplers;
Brian Salomon821ef182017-11-07 16:41:11 -050031 fShaderCaps->fShaderDerivativeSupport = options.fShaderDerivativeSupport;
Chris Daltonfddb6c02017-11-04 15:22:22 -060032
Brian Salomon8fe24272017-07-07 12:56:11 -040033 this->applyOptionsOverrides(contextOptions);
Brian Salomoncfe910d2017-07-06 16:40:18 -040034 }
Greg Daniel81e7bf82017-07-19 14:47:42 -040035 int getSampleCount(int /*requestCount*/, GrPixelConfig /*config*/) const override {
36 return 0;
37 }
Brian Salomoncfe910d2017-07-06 16:40:18 -040038 bool isConfigTexturable(GrPixelConfig config) const override {
39 return fOptions.fConfigOptions[config].fTexturable;
40 }
41 bool isConfigRenderable(GrPixelConfig config, bool withMSAA) const override {
42 return fOptions.fConfigOptions[config].fRenderable[withMSAA];
43 }
Greg Danielbb76ace2017-09-29 15:58:22 -040044 bool isConfigCopyable(GrPixelConfig config) const override {
45 return false;
46 }
47
Brian Salomoncfe910d2017-07-06 16:40:18 -040048 bool canConfigBeImageStorage(GrPixelConfig) const override { return false; }
49 bool initDescForDstCopy(const GrRenderTargetProxy* src, GrSurfaceDesc* desc,
50 bool* rectsMustMatch, bool* disallowSubrect) const override {
51 return false;
52 }
53
54private:
55 GrMockOptions fOptions;
56 typedef GrCaps INHERITED;
57};
58
59#endif