mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-10 05:08:31 +09:00
[Feat] (MG_State/TextureState): Add resource version for texture params.
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
namespace MobileGL {
|
||||
namespace MG_State {
|
||||
namespace GLState {
|
||||
enum class TextureDirtyBit: Uint8 {
|
||||
enum class TextureDirtyBit : Uint8 {
|
||||
None = 0,
|
||||
StorageDirtyBit = 1 << 0, // refers to mipmap or TexBuffer according to tex type
|
||||
ParamDirtyBit = 1 << 1
|
||||
@@ -47,8 +47,9 @@ namespace MobileGL {
|
||||
virtual const UintVec2& GetLevelRange() const = 0;
|
||||
virtual void SetBaseLevel(Uint baseLevel) = 0;
|
||||
virtual void SetMaxLevel(Uint maxLevel) = 0;
|
||||
virtual bool IsDirty() const = 0;
|
||||
virtual bool CheckDirtyBit(TextureDirtyBit bit) const = 0;
|
||||
virtual Bool IsDirty() const = 0;
|
||||
virtual Bool CheckDirtyBit(TextureDirtyBit bit) const = 0;
|
||||
virtual Uint16 GetTextureParamsVersion() const = 0;
|
||||
|
||||
protected:
|
||||
virtual Uint GetIndexOfTextureUploadTarget(TextureUploadTarget target) const = 0;
|
||||
@@ -75,8 +76,9 @@ namespace MobileGL {
|
||||
const UintVec2& GetLevelRange() const override;
|
||||
void SetBaseLevel(Uint baseLevel) override;
|
||||
void SetMaxLevel(Uint maxLevel) override;
|
||||
bool IsDirty() const override;
|
||||
bool CheckDirtyBit(TextureDirtyBit bit) const override;
|
||||
Bool IsDirty() const override;
|
||||
Bool CheckDirtyBit(TextureDirtyBit bit) const override;
|
||||
Uint16 GetTextureParamsVersion() const override;
|
||||
virtual void ClearAllStorageDirtyBit() = 0;
|
||||
|
||||
protected:
|
||||
@@ -88,6 +90,7 @@ namespace MobileGL {
|
||||
Vec4<TextureSwizzleParam> m_swizzleParams = {TextureSwizzleParam::Red, TextureSwizzleParam::Green,
|
||||
TextureSwizzleParam::Blue, TextureSwizzleParam::Alpha};
|
||||
UintVec2 m_levelRange = {0, 1000};
|
||||
Uint16 m_textureParamsVersion = 0;
|
||||
|
||||
Flags<TextureDirtyBit> m_dirtyBit = TextureDirtyBit::None;
|
||||
};
|
||||
@@ -105,8 +108,9 @@ namespace MobileGL {
|
||||
virtual void AllocateStorage(TextureUploadTarget uploadTarget, Uint mipmapLevel, MipmapInput input) = 0;
|
||||
virtual void UpdateMipmapSubData(TextureUploadTarget uploadTarget, Uint mipmapLevel, DataPtr input) = 0;
|
||||
virtual void* MapMipmapData(TextureUploadTarget uploadTarget, Uint mipmapLevel) = 0;
|
||||
virtual void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, bool dirty = true) = 0;
|
||||
virtual bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const = 0;
|
||||
virtual void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel,
|
||||
Bool dirty = true) = 0;
|
||||
virtual Bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const = 0;
|
||||
};
|
||||
|
||||
class TextureObjectWithOneMipmap : public TextureObjectMipmap {
|
||||
@@ -121,8 +125,8 @@ namespace MobileGL {
|
||||
void AllocateStorage(TextureUploadTarget uploadTarget, Uint mipmapLevel, MipmapInput input) override;
|
||||
void UpdateMipmapSubData(TextureUploadTarget uploadTarget, Uint mipmapLevel, DataPtr input) override;
|
||||
void* MapMipmapData(TextureUploadTarget uploadTarget, Uint mipmapLevel) override;
|
||||
void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, bool dirty) override;
|
||||
bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const override;
|
||||
void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, Bool dirty) override;
|
||||
Bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const override;
|
||||
void ClearAllStorageDirtyBit() override;
|
||||
|
||||
IntVec3 GetBaseSize() const override;
|
||||
|
||||
Reference in New Issue
Block a user