tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Sampler.h (2567B)


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