#define DALI_GRAPHICS_GLES_TEXTURE_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
// INTERNAL INCLUDES
#include "gles-graphics-resource.h"
+#include "gles-graphics-types.h"
namespace Dali::Graphics::GLES
{
using TextureResource = Resource<Graphics::Texture, Graphics::TextureCreateInfo>;
+class Sampler;
/**
* The Texture class represents a GPU texture object. It's slightly
}
/**
+ * @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<BoundTextureType>(mCreateInfo.textureType);
+ }
+
+ /**
* @brief Called when initializing the resource
*
* @return True on success
*/
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 inStride Stride of the input data.
+ * @param width Width of the input/output buffer
+ * @param height Height of the intput/output buffer
+ * @param outputBuffer The buffer to write to
+ * @note output Buffer will be packed without stride.
+ * @return true if converted, or false otherwise
+ */
+ bool TryConvertPixelData(const void* pData, Graphics::Format srcFormat, Graphics::Format destFormat, uint32_t sizeInBytes, uint32_t inStride, uint32_t width, uint32_t height, std::vector<uint8_t>& outputBuffer);
+
+ bool InitializeNativeImage();
+
+ bool InitializeTexture();
+
+ Format ValidateFormat(Format sourceFormat);
+
+ bool IsCompressed() const
+ {
+ return mIsCompressed;
+ }
+
+ void SetSamplerParameter(uint32_t param, uint32_t& cacheValue, uint32_t value) const;
+
+ uint32_t GetDependencyIndex() const
+ {
+ return mDependencyIndex;
+ }
+ void SetDependencyIndex(uint32_t dependencyIndex)
+ {
+ mDependencyIndex = dependencyIndex;
+ }
+
private:
- std::vector<char> mStagingBuffer;
+ 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<char> mStagingBuffer{};
uint32_t mTextureId{0u};
GLenum mGlTarget{0u};
+ uint32_t mMaxMipMapLevel{0u};
+ uint32_t mDependencyIndex{0xFFFFFFFF};
void* mGLOwnerContext{nullptr};
- bool InitializeNativeImage();
- bool InitializeTexture();
+ bool mIsCompressed{false};
};
+
} // namespace Dali::Graphics::GLES
#endif