/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrGLSLSampler_DEFINED #define GrGLSLSampler_DEFINED #include "GrTypes.h" #include "GrTypesPriv.h" #include "SkString.h" class GrGLSLSampler { public: virtual ~GrGLSLSampler() {} explicit GrGLSLSampler(uint32_t visibility, GrPixelConfig config) : fVisibility(visibility) , fConfig(config) { SkASSERT(kUnknown_GrPixelConfig != fConfig); } uint32_t visibility() const { return fVisibility; } GrPixelConfig config() const { return fConfig; } virtual GrSLType type() const = 0; // Returns the string to be used for the sampler in glsl 2D texture functions (texture, // texture2D, etc.) const char* getSamplerNameForTexture2D() const { SkASSERT(GrSLTypeIs2DCombinedSamplerType(this->type())); return this->onGetSamplerNameForTexture2D(); } // Returns the string to be used for the sampler in glsl texelFetch. virtual const char* getSamplerNameForTexelFetch() const = 0; private: virtual const char* onGetSamplerNameForTexture2D() const = 0; uint32_t fVisibility; GrPixelConfig fConfig; }; #endif