1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2013 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker // Sampler.h : Defines the Sampler class, which represents a GLES 3 8*8975f5c5SAndroid Build Coastguard Worker // sampler object. Sampler objects store some state needed to sample textures. 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_SAMPLER_H_ 11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_SAMPLER_H_ 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Debug.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Observer.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/RefCountObject.h" 16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h" 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker namespace rx 19*8975f5c5SAndroid Build Coastguard Worker { 20*8975f5c5SAndroid Build Coastguard Worker class GLImplFactory; 21*8975f5c5SAndroid Build Coastguard Worker class SamplerImpl; 22*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker namespace gl 25*8975f5c5SAndroid Build Coastguard Worker { 26*8975f5c5SAndroid Build Coastguard Worker 27*8975f5c5SAndroid Build Coastguard Worker class Sampler final : public RefCountObject<SamplerID>, public LabeledObject, public angle::Subject 28*8975f5c5SAndroid Build Coastguard Worker { 29*8975f5c5SAndroid Build Coastguard Worker public: 30*8975f5c5SAndroid Build Coastguard Worker Sampler(rx::GLImplFactory *factory, SamplerID id); 31*8975f5c5SAndroid Build Coastguard Worker ~Sampler() override; 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker void onDestroy(const Context *context) override; 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker angle::Result setLabel(const Context *context, const std::string &label) override; 36*8975f5c5SAndroid Build Coastguard Worker const std::string &getLabel() const override; 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Worker void setMinFilter(const Context *context, GLenum minFilter); 39*8975f5c5SAndroid Build Coastguard Worker GLenum getMinFilter() const; 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker void setMagFilter(const Context *context, GLenum magFilter); 42*8975f5c5SAndroid Build Coastguard Worker GLenum getMagFilter() const; 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker void setWrapS(const Context *context, GLenum wrapS); 45*8975f5c5SAndroid Build Coastguard Worker GLenum getWrapS() const; 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker void setWrapT(const Context *context, GLenum wrapT); 48*8975f5c5SAndroid Build Coastguard Worker GLenum getWrapT() const; 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker void setWrapR(const Context *context, GLenum wrapR); 51*8975f5c5SAndroid Build Coastguard Worker GLenum getWrapR() const; 52*8975f5c5SAndroid Build Coastguard Worker 53*8975f5c5SAndroid Build Coastguard Worker void setMaxAnisotropy(const Context *context, float maxAnisotropy); 54*8975f5c5SAndroid Build Coastguard Worker float getMaxAnisotropy() const; 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker void setMinLod(const Context *context, GLfloat minLod); 57*8975f5c5SAndroid Build Coastguard Worker GLfloat getMinLod() const; 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker void setMaxLod(const Context *context, GLfloat maxLod); 60*8975f5c5SAndroid Build Coastguard Worker GLfloat getMaxLod() const; 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker void setCompareMode(const Context *context, GLenum compareMode); 63*8975f5c5SAndroid Build Coastguard Worker GLenum getCompareMode() const; 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker void setCompareFunc(const Context *context, GLenum compareFunc); 66*8975f5c5SAndroid Build Coastguard Worker GLenum getCompareFunc() const; 67*8975f5c5SAndroid Build Coastguard Worker 68*8975f5c5SAndroid Build Coastguard Worker void setSRGBDecode(const Context *context, GLenum sRGBDecode); 69*8975f5c5SAndroid Build Coastguard Worker GLenum getSRGBDecode() const; 70*8975f5c5SAndroid Build Coastguard Worker 71*8975f5c5SAndroid Build Coastguard Worker void setBorderColor(const Context *context, const ColorGeneric &color); 72*8975f5c5SAndroid Build Coastguard Worker const ColorGeneric &getBorderColor() const; 73*8975f5c5SAndroid Build Coastguard Worker 74*8975f5c5SAndroid Build Coastguard Worker const SamplerState &getSamplerState() const; 75*8975f5c5SAndroid Build Coastguard Worker 76*8975f5c5SAndroid Build Coastguard Worker rx::SamplerImpl *getImplementation() const; 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker angle::Result syncState(const Context *context); isDirty()79*8975f5c5SAndroid Build Coastguard Worker bool isDirty() const { return mDirty; } 80*8975f5c5SAndroid Build Coastguard Worker 81*8975f5c5SAndroid Build Coastguard Worker private: 82*8975f5c5SAndroid Build Coastguard Worker void signalDirtyState(); 83*8975f5c5SAndroid Build Coastguard Worker SamplerState mState; 84*8975f5c5SAndroid Build Coastguard Worker bool mDirty; 85*8975f5c5SAndroid Build Coastguard Worker rx::SamplerImpl *mSampler; 86*8975f5c5SAndroid Build Coastguard Worker 87*8975f5c5SAndroid Build Coastguard Worker std::string mLabel; 88*8975f5c5SAndroid Build Coastguard Worker }; 89*8975f5c5SAndroid Build Coastguard Worker 90*8975f5c5SAndroid Build Coastguard Worker } // namespace gl 91*8975f5c5SAndroid Build Coastguard Worker 92*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_SAMPLER_H_ 93