1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 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 // TextureGL.h: Defines the class interface for TextureGL. 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_GL_TEXTUREGL_H_ 10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_GL_TEXTUREGL_H_ 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Texture.h" 13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/TextureImpl.h" 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker namespace rx 17*8975f5c5SAndroid Build Coastguard Worker { 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Worker class BlitGL; 20*8975f5c5SAndroid Build Coastguard Worker class FunctionsGL; 21*8975f5c5SAndroid Build Coastguard Worker class StateManagerGL; 22*8975f5c5SAndroid Build Coastguard Worker 23*8975f5c5SAndroid Build Coastguard Worker struct LUMAWorkaroundGL 24*8975f5c5SAndroid Build Coastguard Worker { 25*8975f5c5SAndroid Build Coastguard Worker bool enabled; 26*8975f5c5SAndroid Build Coastguard Worker GLenum workaroundFormat; 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker LUMAWorkaroundGL(); 29*8975f5c5SAndroid Build Coastguard Worker LUMAWorkaroundGL(bool enabled, GLenum workaroundFormat); 30*8975f5c5SAndroid Build Coastguard Worker }; 31*8975f5c5SAndroid Build Coastguard Worker 32*8975f5c5SAndroid Build Coastguard Worker // Structure containing information about format and workarounds for each mip level of the 33*8975f5c5SAndroid Build Coastguard Worker // TextureGL. 34*8975f5c5SAndroid Build Coastguard Worker struct LevelInfoGL 35*8975f5c5SAndroid Build Coastguard Worker { 36*8975f5c5SAndroid Build Coastguard Worker // Format of the data used in this mip level. 37*8975f5c5SAndroid Build Coastguard Worker GLenum sourceFormat; 38*8975f5c5SAndroid Build Coastguard Worker 39*8975f5c5SAndroid Build Coastguard Worker // Internal format used for the native call to define this texture 40*8975f5c5SAndroid Build Coastguard Worker GLenum nativeInternalFormat; 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker // If this mip level requires sampler-state re-writing so that only a red channel is exposed. 43*8975f5c5SAndroid Build Coastguard Worker // In GLES 2.0, depth textures are treated as luminance, so we check the 44*8975f5c5SAndroid Build Coastguard Worker // context's major version when applying the depth swizzle. 45*8975f5c5SAndroid Build Coastguard Worker bool depthStencilWorkaround; 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker // Information about luminance alpha texture workarounds in the core profile. 48*8975f5c5SAndroid Build Coastguard Worker LUMAWorkaroundGL lumaWorkaround; 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker // If this texture level hides the fact that it has an alpha channel by setting the sampler 51*8975f5c5SAndroid Build Coastguard Worker // parameters to always sample 1.0. 52*8975f5c5SAndroid Build Coastguard Worker bool emulatedAlphaChannel; 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker LevelInfoGL(); 55*8975f5c5SAndroid Build Coastguard Worker LevelInfoGL(GLenum sourceFormat, 56*8975f5c5SAndroid Build Coastguard Worker GLenum nativeInternalFormat, 57*8975f5c5SAndroid Build Coastguard Worker bool depthStencilWorkaround, 58*8975f5c5SAndroid Build Coastguard Worker const LUMAWorkaroundGL &lumaWorkaround, 59*8975f5c5SAndroid Build Coastguard Worker bool emulatedAlphaChannel); 60*8975f5c5SAndroid Build Coastguard Worker }; 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker class TextureGL : public TextureImpl 63*8975f5c5SAndroid Build Coastguard Worker { 64*8975f5c5SAndroid Build Coastguard Worker public: 65*8975f5c5SAndroid Build Coastguard Worker TextureGL(const gl::TextureState &state, GLuint id); 66*8975f5c5SAndroid Build Coastguard Worker ~TextureGL() override; 67*8975f5c5SAndroid Build Coastguard Worker 68*8975f5c5SAndroid Build Coastguard Worker void onDestroy(const gl::Context *context) override; 69*8975f5c5SAndroid Build Coastguard Worker 70*8975f5c5SAndroid Build Coastguard Worker angle::Result setImage(const gl::Context *context, 71*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 72*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 73*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 74*8975f5c5SAndroid Build Coastguard Worker GLenum format, 75*8975f5c5SAndroid Build Coastguard Worker GLenum type, 76*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 77*8975f5c5SAndroid Build Coastguard Worker gl::Buffer *unpackBuffer, 78*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels) override; 79*8975f5c5SAndroid Build Coastguard Worker angle::Result setSubImage(const gl::Context *context, 80*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 81*8975f5c5SAndroid Build Coastguard Worker const gl::Box &area, 82*8975f5c5SAndroid Build Coastguard Worker GLenum format, 83*8975f5c5SAndroid Build Coastguard Worker GLenum type, 84*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 85*8975f5c5SAndroid Build Coastguard Worker gl::Buffer *unpackBuffer, 86*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels) override; 87*8975f5c5SAndroid Build Coastguard Worker 88*8975f5c5SAndroid Build Coastguard Worker angle::Result setCompressedImage(const gl::Context *context, 89*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 90*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 91*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 92*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 93*8975f5c5SAndroid Build Coastguard Worker size_t imageSize, 94*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels) override; 95*8975f5c5SAndroid Build Coastguard Worker angle::Result setCompressedSubImage(const gl::Context *context, 96*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 97*8975f5c5SAndroid Build Coastguard Worker const gl::Box &area, 98*8975f5c5SAndroid Build Coastguard Worker GLenum format, 99*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 100*8975f5c5SAndroid Build Coastguard Worker size_t imageSize, 101*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels) override; 102*8975f5c5SAndroid Build Coastguard Worker 103*8975f5c5SAndroid Build Coastguard Worker angle::Result copyImage(const gl::Context *context, 104*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 105*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &sourceArea, 106*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 107*8975f5c5SAndroid Build Coastguard Worker gl::Framebuffer *source) override; 108*8975f5c5SAndroid Build Coastguard Worker angle::Result copySubImage(const gl::Context *context, 109*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 110*8975f5c5SAndroid Build Coastguard Worker const gl::Offset &destOffset, 111*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &sourceArea, 112*8975f5c5SAndroid Build Coastguard Worker gl::Framebuffer *source) override; 113*8975f5c5SAndroid Build Coastguard Worker 114*8975f5c5SAndroid Build Coastguard Worker angle::Result copyTexture(const gl::Context *context, 115*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 116*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 117*8975f5c5SAndroid Build Coastguard Worker GLenum type, 118*8975f5c5SAndroid Build Coastguard Worker GLint sourceLevel, 119*8975f5c5SAndroid Build Coastguard Worker bool unpackFlipY, 120*8975f5c5SAndroid Build Coastguard Worker bool unpackPremultiplyAlpha, 121*8975f5c5SAndroid Build Coastguard Worker bool unpackUnmultiplyAlpha, 122*8975f5c5SAndroid Build Coastguard Worker const gl::Texture *source) override; 123*8975f5c5SAndroid Build Coastguard Worker angle::Result copySubTexture(const gl::Context *context, 124*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 125*8975f5c5SAndroid Build Coastguard Worker const gl::Offset &destOffset, 126*8975f5c5SAndroid Build Coastguard Worker GLint sourceLevel, 127*8975f5c5SAndroid Build Coastguard Worker const gl::Box &sourceBox, 128*8975f5c5SAndroid Build Coastguard Worker bool unpackFlipY, 129*8975f5c5SAndroid Build Coastguard Worker bool unpackPremultiplyAlpha, 130*8975f5c5SAndroid Build Coastguard Worker bool unpackUnmultiplyAlpha, 131*8975f5c5SAndroid Build Coastguard Worker const gl::Texture *source) override; 132*8975f5c5SAndroid Build Coastguard Worker angle::Result copySubTextureHelper(const gl::Context *context, 133*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 134*8975f5c5SAndroid Build Coastguard Worker size_t level, 135*8975f5c5SAndroid Build Coastguard Worker const gl::Offset &destOffset, 136*8975f5c5SAndroid Build Coastguard Worker GLint sourceLevel, 137*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &sourceArea, 138*8975f5c5SAndroid Build Coastguard Worker const gl::InternalFormat &destFormat, 139*8975f5c5SAndroid Build Coastguard Worker bool unpackFlipY, 140*8975f5c5SAndroid Build Coastguard Worker bool unpackPremultiplyAlpha, 141*8975f5c5SAndroid Build Coastguard Worker bool unpackUnmultiplyAlpha, 142*8975f5c5SAndroid Build Coastguard Worker const gl::Texture *source); 143*8975f5c5SAndroid Build Coastguard Worker 144*8975f5c5SAndroid Build Coastguard Worker angle::Result setStorage(const gl::Context *context, 145*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 146*8975f5c5SAndroid Build Coastguard Worker size_t levels, 147*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 148*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size) override; 149*8975f5c5SAndroid Build Coastguard Worker 150*8975f5c5SAndroid Build Coastguard Worker angle::Result setStorageMultisample(const gl::Context *context, 151*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 152*8975f5c5SAndroid Build Coastguard Worker GLsizei samples, 153*8975f5c5SAndroid Build Coastguard Worker GLint internalformat, 154*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 155*8975f5c5SAndroid Build Coastguard Worker bool fixedSampleLocations) override; 156*8975f5c5SAndroid Build Coastguard Worker 157*8975f5c5SAndroid Build Coastguard Worker angle::Result setStorageExternalMemory(const gl::Context *context, 158*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 159*8975f5c5SAndroid Build Coastguard Worker size_t levels, 160*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 161*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 162*8975f5c5SAndroid Build Coastguard Worker gl::MemoryObject *memoryObject, 163*8975f5c5SAndroid Build Coastguard Worker GLuint64 offset, 164*8975f5c5SAndroid Build Coastguard Worker GLbitfield createFlags, 165*8975f5c5SAndroid Build Coastguard Worker GLbitfield usageFlags, 166*8975f5c5SAndroid Build Coastguard Worker const void *imageCreateInfoPNext) override; 167*8975f5c5SAndroid Build Coastguard Worker 168*8975f5c5SAndroid Build Coastguard Worker angle::Result setImageExternal(const gl::Context *context, 169*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &index, 170*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 171*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 172*8975f5c5SAndroid Build Coastguard Worker GLenum format, 173*8975f5c5SAndroid Build Coastguard Worker GLenum type) override; 174*8975f5c5SAndroid Build Coastguard Worker 175*8975f5c5SAndroid Build Coastguard Worker angle::Result setImageExternal(const gl::Context *context, 176*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 177*8975f5c5SAndroid Build Coastguard Worker egl::Stream *stream, 178*8975f5c5SAndroid Build Coastguard Worker const egl::Stream::GLTextureDescription &desc) override; 179*8975f5c5SAndroid Build Coastguard Worker 180*8975f5c5SAndroid Build Coastguard Worker angle::Result generateMipmap(const gl::Context *context) override; 181*8975f5c5SAndroid Build Coastguard Worker 182*8975f5c5SAndroid Build Coastguard Worker angle::Result clearImage(const gl::Context *context, 183*8975f5c5SAndroid Build Coastguard Worker GLint level, 184*8975f5c5SAndroid Build Coastguard Worker GLenum format, 185*8975f5c5SAndroid Build Coastguard Worker GLenum type, 186*8975f5c5SAndroid Build Coastguard Worker const uint8_t *data) override; 187*8975f5c5SAndroid Build Coastguard Worker angle::Result clearSubImage(const gl::Context *context, 188*8975f5c5SAndroid Build Coastguard Worker GLint level, 189*8975f5c5SAndroid Build Coastguard Worker const gl::Box &area, 190*8975f5c5SAndroid Build Coastguard Worker GLenum format, 191*8975f5c5SAndroid Build Coastguard Worker GLenum type, 192*8975f5c5SAndroid Build Coastguard Worker const uint8_t *data) override; 193*8975f5c5SAndroid Build Coastguard Worker 194*8975f5c5SAndroid Build Coastguard Worker angle::Result bindTexImage(const gl::Context *context, egl::Surface *surface) override; 195*8975f5c5SAndroid Build Coastguard Worker angle::Result releaseTexImage(const gl::Context *context) override; 196*8975f5c5SAndroid Build Coastguard Worker 197*8975f5c5SAndroid Build Coastguard Worker angle::Result setEGLImageTarget(const gl::Context *context, 198*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 199*8975f5c5SAndroid Build Coastguard Worker egl::Image *image) override; 200*8975f5c5SAndroid Build Coastguard Worker 201*8975f5c5SAndroid Build Coastguard Worker GLint getNativeID() const override; 202*8975f5c5SAndroid Build Coastguard Worker getTextureID()203*8975f5c5SAndroid Build Coastguard Worker GLuint getTextureID() const { return mTextureID; } 204*8975f5c5SAndroid Build Coastguard Worker 205*8975f5c5SAndroid Build Coastguard Worker gl::TextureType getType() const; 206*8975f5c5SAndroid Build Coastguard Worker 207*8975f5c5SAndroid Build Coastguard Worker angle::Result syncState(const gl::Context *context, 208*8975f5c5SAndroid Build Coastguard Worker const gl::Texture::DirtyBits &dirtyBits, 209*8975f5c5SAndroid Build Coastguard Worker gl::Command source) override; 210*8975f5c5SAndroid Build Coastguard Worker bool hasAnyDirtyBit() const; 211*8975f5c5SAndroid Build Coastguard Worker 212*8975f5c5SAndroid Build Coastguard Worker angle::Result setBaseLevel(const gl::Context *context, GLuint baseLevel) override; 213*8975f5c5SAndroid Build Coastguard Worker angle::Result setMaxLevel(const gl::Context *context, GLuint maxLevel); 214*8975f5c5SAndroid Build Coastguard Worker 215*8975f5c5SAndroid Build Coastguard Worker angle::Result initializeContents(const gl::Context *context, 216*8975f5c5SAndroid Build Coastguard Worker GLenum binding, 217*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &imageIndex) override; 218*8975f5c5SAndroid Build Coastguard Worker 219*8975f5c5SAndroid Build Coastguard Worker GLint getRequiredExternalTextureImageUnits(const gl::Context *context) override; 220*8975f5c5SAndroid Build Coastguard Worker 221*8975f5c5SAndroid Build Coastguard Worker angle::Result setMinFilter(const gl::Context *context, GLenum filter); 222*8975f5c5SAndroid Build Coastguard Worker angle::Result setMagFilter(const gl::Context *context, GLenum filter); 223*8975f5c5SAndroid Build Coastguard Worker 224*8975f5c5SAndroid Build Coastguard Worker angle::Result setSwizzle(const gl::Context *context, GLint swizzle[4]); 225*8975f5c5SAndroid Build Coastguard Worker 226*8975f5c5SAndroid Build Coastguard Worker angle::Result setBuffer(const gl::Context *context, GLenum internalFormat) override; 227*8975f5c5SAndroid Build Coastguard Worker 228*8975f5c5SAndroid Build Coastguard Worker GLenum getNativeInternalFormat(const gl::ImageIndex &index) const; 229*8975f5c5SAndroid Build Coastguard Worker bool hasEmulatedAlphaChannel(const gl::ImageIndex &index) const; 230*8975f5c5SAndroid Build Coastguard Worker 231*8975f5c5SAndroid Build Coastguard Worker private: 232*8975f5c5SAndroid Build Coastguard Worker angle::Result recreateTexture(const gl::Context *context); 233*8975f5c5SAndroid Build Coastguard Worker 234*8975f5c5SAndroid Build Coastguard Worker angle::Result setImageHelper(const gl::Context *context, 235*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 236*8975f5c5SAndroid Build Coastguard Worker size_t level, 237*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 238*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 239*8975f5c5SAndroid Build Coastguard Worker GLenum format, 240*8975f5c5SAndroid Build Coastguard Worker GLenum type, 241*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels); 242*8975f5c5SAndroid Build Coastguard Worker // This changes the current pixel unpack state that will have to be reapplied. 243*8975f5c5SAndroid Build Coastguard Worker angle::Result reserveTexImageToBeFilled(const gl::Context *context, 244*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 245*8975f5c5SAndroid Build Coastguard Worker size_t level, 246*8975f5c5SAndroid Build Coastguard Worker GLenum internalFormat, 247*8975f5c5SAndroid Build Coastguard Worker const gl::Extents &size, 248*8975f5c5SAndroid Build Coastguard Worker GLenum format, 249*8975f5c5SAndroid Build Coastguard Worker GLenum type); 250*8975f5c5SAndroid Build Coastguard Worker angle::Result setSubImageRowByRowWorkaround(const gl::Context *context, 251*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 252*8975f5c5SAndroid Build Coastguard Worker size_t level, 253*8975f5c5SAndroid Build Coastguard Worker const gl::Box &area, 254*8975f5c5SAndroid Build Coastguard Worker GLenum format, 255*8975f5c5SAndroid Build Coastguard Worker GLenum type, 256*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 257*8975f5c5SAndroid Build Coastguard Worker const gl::Buffer *unpackBuffer, 258*8975f5c5SAndroid Build Coastguard Worker size_t maxBytesUploadedPerChunk, 259*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels); 260*8975f5c5SAndroid Build Coastguard Worker 261*8975f5c5SAndroid Build Coastguard Worker angle::Result setSubImagePaddingWorkaround(const gl::Context *context, 262*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 263*8975f5c5SAndroid Build Coastguard Worker size_t level, 264*8975f5c5SAndroid Build Coastguard Worker const gl::Box &area, 265*8975f5c5SAndroid Build Coastguard Worker GLenum format, 266*8975f5c5SAndroid Build Coastguard Worker GLenum type, 267*8975f5c5SAndroid Build Coastguard Worker const gl::PixelUnpackState &unpack, 268*8975f5c5SAndroid Build Coastguard Worker const gl::Buffer *unpackBuffer, 269*8975f5c5SAndroid Build Coastguard Worker const uint8_t *pixels); 270*8975f5c5SAndroid Build Coastguard Worker 271*8975f5c5SAndroid Build Coastguard Worker angle::Result syncTextureStateSwizzle(const gl::Context *context, 272*8975f5c5SAndroid Build Coastguard Worker const FunctionsGL *functions, 273*8975f5c5SAndroid Build Coastguard Worker GLenum name, 274*8975f5c5SAndroid Build Coastguard Worker GLenum value, 275*8975f5c5SAndroid Build Coastguard Worker GLenum *currentlyAppliedValue); 276*8975f5c5SAndroid Build Coastguard Worker 277*8975f5c5SAndroid Build Coastguard Worker void setLevelInfo(const gl::Context *context, 278*8975f5c5SAndroid Build Coastguard Worker gl::TextureTarget target, 279*8975f5c5SAndroid Build Coastguard Worker size_t level, 280*8975f5c5SAndroid Build Coastguard Worker size_t levelCount, 281*8975f5c5SAndroid Build Coastguard Worker const LevelInfoGL &levelInfo); 282*8975f5c5SAndroid Build Coastguard Worker void setLevelInfo(const gl::Context *context, 283*8975f5c5SAndroid Build Coastguard Worker gl::TextureType type, 284*8975f5c5SAndroid Build Coastguard Worker size_t level, 285*8975f5c5SAndroid Build Coastguard Worker size_t levelCount, 286*8975f5c5SAndroid Build Coastguard Worker const LevelInfoGL &levelInfo); 287*8975f5c5SAndroid Build Coastguard Worker const LevelInfoGL &getLevelInfo(gl::TextureTarget target, size_t level) const; 288*8975f5c5SAndroid Build Coastguard Worker const LevelInfoGL &getBaseLevelInfo() const; 289*8975f5c5SAndroid Build Coastguard Worker 290*8975f5c5SAndroid Build Coastguard Worker std::vector<LevelInfoGL> mLevelInfo; 291*8975f5c5SAndroid Build Coastguard Worker gl::Texture::DirtyBits mLocalDirtyBits; 292*8975f5c5SAndroid Build Coastguard Worker 293*8975f5c5SAndroid Build Coastguard Worker // All dirty bits ever sychronized by this texture OR'd together. Used to know what state needs 294*8975f5c5SAndroid Build Coastguard Worker // to be resynced if the texture is ever recreated without needing extension checks or state 295*8975f5c5SAndroid Build Coastguard Worker // comparisons. 296*8975f5c5SAndroid Build Coastguard Worker gl::Texture::DirtyBits mAllModifiedDirtyBits; 297*8975f5c5SAndroid Build Coastguard Worker 298*8975f5c5SAndroid Build Coastguard Worker gl::SwizzleState mAppliedSwizzle; 299*8975f5c5SAndroid Build Coastguard Worker gl::SamplerState mAppliedSampler; 300*8975f5c5SAndroid Build Coastguard Worker GLuint mAppliedBaseLevel; 301*8975f5c5SAndroid Build Coastguard Worker GLuint mAppliedMaxLevel; 302*8975f5c5SAndroid Build Coastguard Worker GLenum mAppliedDepthStencilTextureMode; 303*8975f5c5SAndroid Build Coastguard Worker 304*8975f5c5SAndroid Build Coastguard Worker GLuint mTextureID; 305*8975f5c5SAndroid Build Coastguard Worker }; 306*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 307*8975f5c5SAndroid Build Coastguard Worker 308*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_GL_TEXTUREGL_H_ 309