/* * 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 GrVkGLSLSampler_DEFINED #define GrVkGLSLSampler_DEFINED #include "glsl/GrGLSLSampler.h" #include "glsl/GrGLSLShaderVar.h" class GrVkGLSLSampler : public GrGLSLSampler { public: GrVkGLSLSampler(uint32_t visibility, GrPixelConfig config, GrSLType type, GrSLPrecision precision, const char* name, uint32_t binding, uint32_t set) : INHERITED(visibility, config), fBinding(binding) { SkASSERT(GrSLTypeIsCombinedSamplerType(type)); fShaderVar.setType(type); fShaderVar.setTypeModifier(GrGLSLShaderVar::kUniform_TypeModifier); fShaderVar.setPrecision(precision); fShaderVar.accessName()->set(name); SkString layoutQualifier; layoutQualifier.appendf("set=%d, binding=%d", set, binding); fShaderVar.setLayoutQualifier(layoutQualifier.c_str()); } GrSLType type() const override { return fShaderVar.getType(); } uint32_t binding() const { return fBinding; } const char* onGetSamplerNameForTexture2D() const override { return fShaderVar.c_str(); } const char* getSamplerNameForTexelFetch() const override { return fShaderVar.c_str(); } private: GrGLSLShaderVar fShaderVar; uint32_t fBinding; friend class GrVkUniformHandler; typedef GrGLSLSampler INHERITED; }; #endif