diff options
Diffstat (limited to 'gfx/angle/checkout/src/libANGLE/Sampler.h')
-rw-r--r-- | gfx/angle/checkout/src/libANGLE/Sampler.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/libANGLE/Sampler.h b/gfx/angle/checkout/src/libANGLE/Sampler.h new file mode 100644 index 0000000000..b483593780 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/Sampler.h @@ -0,0 +1,92 @@ +// +// Copyright 2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Sampler.h : Defines the Sampler class, which represents a GLES 3 +// sampler object. Sampler objects store some state needed to sample textures. + +#ifndef LIBANGLE_SAMPLER_H_ +#define LIBANGLE_SAMPLER_H_ + +#include "libANGLE/Debug.h" +#include "libANGLE/Observer.h" +#include "libANGLE/RefCountObject.h" +#include "libANGLE/angletypes.h" + +namespace rx +{ +class GLImplFactory; +class SamplerImpl; +} // namespace rx + +namespace gl +{ + +class Sampler final : public RefCountObject<SamplerID>, public LabeledObject, public angle::Subject +{ + public: + Sampler(rx::GLImplFactory *factory, SamplerID id); + ~Sampler() override; + + void onDestroy(const Context *context) override; + + angle::Result setLabel(const Context *context, const std::string &label) override; + const std::string &getLabel() const override; + + void setMinFilter(const Context *context, GLenum minFilter); + GLenum getMinFilter() const; + + void setMagFilter(const Context *context, GLenum magFilter); + GLenum getMagFilter() const; + + void setWrapS(const Context *context, GLenum wrapS); + GLenum getWrapS() const; + + void setWrapT(const Context *context, GLenum wrapT); + GLenum getWrapT() const; + + void setWrapR(const Context *context, GLenum wrapR); + GLenum getWrapR() const; + + void setMaxAnisotropy(const Context *context, float maxAnisotropy); + float getMaxAnisotropy() const; + + void setMinLod(const Context *context, GLfloat minLod); + GLfloat getMinLod() const; + + void setMaxLod(const Context *context, GLfloat maxLod); + GLfloat getMaxLod() const; + + void setCompareMode(const Context *context, GLenum compareMode); + GLenum getCompareMode() const; + + void setCompareFunc(const Context *context, GLenum compareFunc); + GLenum getCompareFunc() const; + + void setSRGBDecode(const Context *context, GLenum sRGBDecode); + GLenum getSRGBDecode() const; + + void setBorderColor(const Context *context, const ColorGeneric &color); + const ColorGeneric &getBorderColor() const; + + const SamplerState &getSamplerState() const; + + rx::SamplerImpl *getImplementation() const; + + angle::Result syncState(const Context *context); + bool isDirty() const { return mDirty; } + + private: + void signalDirtyState(); + SamplerState mState; + bool mDirty; + rx::SamplerImpl *mSampler; + + std::string mLabel; +}; + +} // namespace gl + +#endif // LIBANGLE_SAMPLER_H_ |