blob: bc90769295cb63c5f195734b6dd5e47e447760dd [file] [log] [blame]
/*
* 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