X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fgraphics%2Fgles-impl%2Fgles-graphics-texture.h;h=2ae566ffbda7d6ab7bf539eb941ebaf067fd3e48;hb=17bf836806d3ae9365002d8d1d4bc281a3e0bc9d;hp=c6e46dc6aec81ea233451f22c194222cf792647d;hpb=6fbf5324d76a28996133860641e5c630d93bfe68;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/graphics/gles-impl/gles-graphics-texture.h b/dali/internal/graphics/gles-impl/gles-graphics-texture.h index c6e46dc..2ae566f 100644 --- a/dali/internal/graphics/gles-impl/gles-graphics-texture.h +++ b/dali/internal/graphics/gles-impl/gles-graphics-texture.h @@ -26,10 +26,12 @@ // INTERNAL INCLUDES #include "gles-graphics-resource.h" +#include "gles-graphics-types.h" namespace Dali::Graphics::GLES { using TextureResource = Resource; +class Sampler; /** * The Texture class represents a GPU texture object. It's slightly @@ -65,6 +67,15 @@ public: } /** + * @brief Returns the type of the bound Gl texture + * @return The type of the bound Gl texture + */ + [[nodiscard]] BoundTextureType GetTextureTypeId() const + { + return mCreateInfo.nativeImagePtr ? BoundTextureType::TEXTURE_EXTERNAL_OES : static_cast(mCreateInfo.textureType); + } + + /** * @brief Called when initializing the resource * * @return True on success @@ -88,15 +99,75 @@ public: */ void Prepare(); -protected: + /** + * @brief Returns the GL Target + * @return the Gl target + */ + [[nodiscard]] GLenum GetGlTarget() const + { + return mGlTarget; + } + + /** + * @brief Sets the maximum mipmap level + * @param[in] maxMipMapLevel The maximum mipmap level + */ + void SetMaxMipMapLevel(const uint32_t maxMipMapLevel) + { + mMaxMipMapLevel = maxMipMapLevel; + } + + /** + * @brief Returns the maximum mipmap level + * @return The maximum mipmap level + */ + [[nodiscard]] uint32_t GetMaxMipMapLevel() const + { + return mMaxMipMapLevel; + } + + /** + * @param pData Input data + * @param sizeInBytes Size of the input data in bytes + * @param width Width of the output buffer + * @param height height of the output buffer + * @param outputBuffer The buffer to write to + * @return true if converted, or false otherwise + */ + bool TryConvertPixelData(const void* pData, Graphics::Format srcFormat, Graphics::Format destFormat, uint32_t sizeInBytes, uint32_t width, uint32_t height, std::vector& outputBuffer); + + bool InitializeNativeImage(); + + bool InitializeTexture(); + + Format ValidateFormat(Format sourceFormat); + + bool IsCompressed() + { + return mIsCompressed; + } + + void SetSamplerParameter(uint32_t param, uint32_t& cacheValue, uint32_t value) const; + private: + mutable struct SamplerStateCache + { + uint32_t minFilter{0}; + uint32_t magFilter{0}; + uint32_t wrapS{0}; + uint32_t wrapT{0}; + uint32_t wrapR{0}; + uint32_t maxLevel{0}; + } mDefaultSamplerState; + std::vector mStagingBuffer; uint32_t mTextureId{0u}; GLenum mGlTarget{0u}; + uint32_t mMaxMipMapLevel{0u}; void* mGLOwnerContext{nullptr}; - bool InitializeNativeImage(); - bool InitializeTexture(); + bool mIsCompressed{false}; }; + } // namespace Dali::Graphics::GLES #endif